{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import mdtraj as md"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "BME_JC_1-Copy1.ipynb  BME_JC_2.ipynb   \u001b[0m\u001b[01;34m__pycache__\u001b[0m/       sim_Charmm36m.dat\r\n",
      "BME_JC_1.html         bme.py           \u001b[01;34mRee_unscaled\u001b[0m/      \u001b[01;34mStructures_LL\u001b[0m/\r\n",
      "BME_JC_1.ipynb        bme_reweight.py  \u001b[01;31mRee_unscaled.zip\u001b[0m   \u001b[01;31mStructures_LL.zip\u001b[0m\r\n",
      "BME_JC_2.html         exp.dat          sim_a99SB-UCB.dat\r\n"
     ]
    }
   ],
   "source": [
    "ls"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\u001b[0m\u001b[01;34ma03ws\u001b[0m/      \u001b[01;34ma99SB-ILDN-TIP4PD\u001b[0m/     \u001b[01;34ma99SB-UCB\u001b[0m/      \u001b[01;34mCharmm36m\u001b[0m/  \u001b[01;34mExperimental\u001b[0m/\r\n",
      "\u001b[01;34ma99SBdisp\u001b[0m/  \u001b[01;34ma99SBstar-ILDN-TIP3P\u001b[0m/  \u001b[01;34mc22star-TIP3P\u001b[0m/  \u001b[01;34mCode_BME\u001b[0m/\r\n"
     ]
    }
   ],
   "source": [
    "ls .."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. Data Collection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "exp_file = '../Experimental/exp_coup.txt'\n",
    "sim_file = '../a99SB-UCB/phi-123.dat'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "#load your location to file\n",
    "exp_data=np.loadtxt(exp_file,usecols=(0,1))\n",
    "exp_data = exp_data.T\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "#load your location to file\n",
    "sim_data = np.loadtxt(sim_file, comments='#',usecols=(0,2))\n",
    "## making groups of 40\n",
    "sim_data=sim_data[:,1]\n",
    "sim_data=np.reshape(sim_data,(-1,40)).T\n",
    "sim_data = sim_data.tolist()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "bla = []\n",
    "for i in range(40):\n",
    "    if exp_data[1][i] != 0.0:\n",
    "        bla.append([i+1,[exp_data[1][i],0.42],sim_data[i]])\n",
    "        "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "res = []\n",
    "exp_data = []\n",
    "sim_data = []\n",
    "for i in range(len(bla)):\n",
    "    res.append(bla[i][0])\n",
    "    exp_data.append(bla[i][1])\n",
    "    sim_data.append(bla[i][2])\n",
    "\n",
    "res = np.array(res)\n",
    "exp_data = np.array(exp_data)\n",
    "sim_data = np.array(sim_data).T "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "# write experimental data\n",
    "fileout = open('exp.dat','w')\n",
    "fileout.write('# DATA=JCOUPLINGS PRIOR=GAUSS' + '\\n')\n",
    "for f, b in zip(res, exp_data):\n",
    "    fileout.write(str(f) + ' ' + str(b[0]) + ' ' + str(b[1]) + '\\n')\n",
    "    \n",
    "fileout.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "# write simulation data\n",
    "fileout = open('sim_a99SB-UCB.dat','w')\n",
    "#fileout.write('# DATA=JCOUPLINGS PRIOR=GAUSS' + '\\n')\n",
    "for index, value in enumerate(sim_data):\n",
    "    fileout.write(str(index))\n",
    "    for i in range(len(sim_data[index])):\n",
    "        fileout.write(' ' + str(value[i]))\n",
    "    fileout.write('\\n')  \n",
    "fileout.close()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# define plotting function. \n",
    "def plot(f1,f2,wopt=[],w=None,power=None):\n",
    "\n",
    "    # define figure size\n",
    "    fig, ax = plt.subplots(1,1,figsize=(10,8))\n",
    "    # read experimental averages and errors\n",
    "    exp_data = np.array([[float(x) for x in line.split()[1:]] for line in open(f1) if \"#\" not in line])\n",
    "    # read labels\n",
    "    labels = [line.split()[0] for line in open(f1) if \"#\" not in line]\n",
    "    # read back-calculated data \n",
    "    calc_data = np.array([[float(x) for x in line.split()[1:]] for line in open(f2) if \"#\" not in line])\n",
    "    \n",
    "    # sort by magnitude to make the plot nicer\n",
    "    idxs = np.argsort(exp_data[:,0])\n",
    "    xx = range(len(idxs))\n",
    "    \n",
    "    # plot experimental data\n",
    "    plt.errorbar(xx,exp_data[idxs,0],yerr=exp_data[idxs,1],fmt=\"o\",label=\"Exp\",c='gray')\n",
    "    # if power is specified, treat as NOE \n",
    "    if(power!=None):\n",
    "        avg = np.average(np.power(calc_data[:,idxs],-power),axis=0,weights=w)\n",
    "        plt.scatter(xx,np.power(avg,-1./power),label = \"MD\")\n",
    "    else:\n",
    "        plt.scatter(xx,np.average(calc_data[:,idxs],axis=0,weights=w),label = \"MD\")\n",
    "    # optionally use weights\n",
    "    print(len(wopt))\n",
    "    if(len(wopt)!=0):\n",
    "        if(power!=None):\n",
    "            avg = np.average(np.power(calc_data[:,idxs],-power),axis=0,weights=wopt)\n",
    "            plt.scatter(xx,np.power(avg,-1./power),label = \"MD reweighted\")\n",
    "        else:\n",
    "            plt.scatter(xx,np.average(calc_data[:,idxs],axis=0,weights=wopt),label = \"MD, reweighted\")\n",
    "    # set legend\n",
    "    plt.legend(loc=2)\n",
    "    # set xticks \n",
    "    nl = [labels[i] for i in idxs]\n",
    "    plt.xticks(xx,nl,rotation=90)\n",
    "    return labels, exp_data, calc_data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0\n",
      "36\n"
     ]
    },
    {
     "data": {
      "image/png": "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9+/XokWL9M53vlOSNDw8rEWLFmnFihU68cQTtWrVKn3ve9+LKlwAABAxkqk5jjzySN17772amZmRJN1+++3q7++ftc973vMejY2N6Sc/+YnWrl2rc889Vzt37owiXAAAEDGSqXmcffbZuvnmmyVJ1113nc4///yK+775zW/WRRddpI0bN7YrPAAA0EFinUyNjE3qtPVbtWztzTpt/VaNjE025XHPO+88ffWrX9VTTz2le+65R6eeemrV/U8++WTt2rWrKccGAADx0lFTIzRiZGxS6zblNVMoSpImp2a0blNekrR6RX+1qjW96lWv0oMPPqjrrrtOZ599ds39nXOhjgcAAOIrti1TG7bsPpBIlcwUitqwZXdTHv+cc87RZZddVrWLr2RsbEwnnXRSU44LAADiJbYtU3umZhoqb9T73vc+9fX1KZPJ6Jvf/GbF/b71rW9p48aNuuOOO5pyXAAAEC+xTaYW9/Vqcp7EaXFfb1Mef8mSJbrkkkvm3Xb99dfrO9/5jp588kktW7ZMX/va12iZAgCgS8U2mVqzavmsMVOS1Jvq0ZpVy0M97uOPP/6csjPPPFNnnnmmJGlwcFCDg4OhjgEAAJIjtslUaZD5hi27tWdqRov7erVm1fLQg88BAAAaEdtkSvISKpInAAAQpdhezQcAALrT8PCwhoeHow7jAJIpAACAEEimAAAAQiCZAgAACCHWA9AlHegzbdZ0BT09PcpkMgd+P++887R27dqmPDYAAEie2CdTzdbb26sdO3ZEHQYAAIiJWHfz5fN5TUxMaHx8XENDQ8rn8y05zvT0tJYvX67du711/84//3xdc801kqSjjjpKH/nIR/SKV7xC2WxWe/fubUkMAACgM8U2mcrn88rlcioWvRnQp6enlcvlQidUMzMzes1rXnPgdv311yudTuvKK6/U4OCgvvrVr+rRRx/V+9//fknSE088oZUrV+q+++7TGWecoY997GOhnxsAAIiP2HbzjY6OqlAozCorFAoaHR2dNeapUZW6+d761rfqhhtu0Ac/+EHdfffdB8oPOeQQvec975EkXXDBBTr33HMDHxsAAMRPXS1TZvYRM7vPzO41s+vM7PA52wfNbK+Z7fBvf9yacA+anp5uqDysZ599Vjt37tQRRxyhRx99tOJ+ZtaS4wMAgM5UM5kys35Jl0ha6Zx7paQeSefNs+v1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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# define name of files                                                                               \n",
    "exp_couplings = 'exp.dat'\n",
    "calc_couplings = 'sim_a99SB-UCB.dat'\n",
    "\n",
    "# plot data\n",
    "labels, exp_data, calc_data = plot(exp_couplings,calc_couplings)\n",
    "print (len(labels))\n",
    "plt.title(\"Scalar couplings\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# find index corresponding to the desired coupling\n",
    "idx = labels.index(\"21\")\n",
    "# plot the histogram\n",
    "plt.hist(calc_data[:,idx],bins=75,density=True,alpha=0.75)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(np.average(calc_data[:,idx]),label=\"MD average\",ls=\"--\",lw=3)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(exp_data[idx,0],c='k',label=\"experimental\",ls=\"--\",lw=3)\n",
    "plt.xlabel(\"J coupling (Hz)\")\n",
    "plt.legend()\n",
    "plt.show()\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. BME reweighting ##\n",
    "\n",
    "We here show how to apply the BME reweighting procedure. Essentially, there are only three fundamental steps:\n",
    "1. Initialize the class \n",
    "2. Load the data. Multiple data can be also loaded (see next example)\n",
    "3. Optimize\n",
    "\n",
    "In the example below we match all 36 scalar couplings data described above. Theta is set to 2 for the moment being, the procedure and code to find viable values for theta are shown below."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# theta: 2\n",
      "# CHI2 before minimization:       1.9450\n",
      "# CHI2 after minimization:        0.0081\n",
      "# Fraction of effective frames:   0.3521\n"
     ]
    }
   ],
   "source": [
    "# import modules\n",
    "#import sys\n",
    "#import os\n",
    "\n",
    "# this is a trick to get the parent directory \n",
    "#directory_to_bme = os.getcwd()[:-8]\n",
    "#sys.path.append(directory_to_bme)\n",
    "\n",
    "import bme_reweight as bme\n",
    "\n",
    "# initialize reweighting class                                                                                                                                \n",
    "rew = bme.Reweight()\n",
    "\n",
    "# load data                                                                                      \n",
    "rew.load(exp_couplings,calc_couplings)\n",
    "\n",
    "# do optimization using theta=2                                                                                                                               \n",
    "chi2_before,chi2_after, srel = rew.optimize(theta=2)\n",
    "\n",
    "print (\"# CHI2 before minimization:     %8.4f\" % (chi2_before))\n",
    "print (\"# CHI2 after minimization:      %8.4f\" % (chi2_after))\n",
    "print (\"# Fraction of effective frames: %8.4f\" % (np.exp(srel)))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "29978\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAAHVCAYAAADVQH6wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzdfXzkZX3v/9dFGCEgTlrE1t0g0FPYok7K4or2cCM4R1YoQeT0t+D5aRs8inr8HcTfwz0/eLRdC7WVc/DUiJyDLtimPVXkRtjdEZG1Abd4h7AEdpBlwVICCbRdV3eAJcBk9vr9MZMlCbmZm0zmJq/n45FHZq6Z73w/yWaT91zX9b2uEGNEkiRJ1dmv0QVIkiS1MsOUJElSDQxTkiRJNTBMSZIk1cAwJUmSVAPDlCRJUg32b9SJX//618cjjzyyUaeXJEkq29atW38RYzxspscaFqaOPPJI7rvvvkadXpIkqWwhhOHZHnOYT5IkqQaGKUmSpBoYpiRJkmrQsDlTM8nn84yMjPDiiy82uhTV4MADD6S7u5tEItHoUiRJqrumClMjIyMccsghHHnkkYQQGl2OqhBjZNeuXYyMjHDUUUc1uhxJkuquqYb5XnzxRQ499FCDVAsLIXDooYfauyhJWjKaKkwBBqk24L+hJGkpabow1WghBD74wQ/uuz8+Ps5hhx3GWWedBcDAwACHHXYYK1eu5Oijj2b16tX86Ec/alS5kiSpwQxT0xx88ME89NBDjI2NAfC9732P5cuXT3nOeeedx9DQEI899hiXXHIJ5557Ltu3b29EuZIkqcEMUzM488wzue222wC4/vrr+cAHPjDrc0877TQuvPBC1q9fv1jlSZKkJtLSYWrD0CgnXnEnR11yGydecScbhkYX5HXPP/98vvnNb/Liiy+ybds23vGOd8z5/OOPP55HHnlkQc4tSZJaS1MtjVCJDUOjXHpLlrF8AYDR3WNceksWgHNWLp/r0Hn19PTwxBNPcP3113PmmWfO+/wYY03nkyRJratle6auvGPHviA1YSxf4Mo7dizI65999tl85jOfmXOIb8LQ0BDHHnvsgpxXkiS1lpbtmXp691hF7ZX68Ic/TFdXF6lUiu9///uzPm/Lli2sX7+eu+66a0HOK0mSWkvLhqllXZ2MzhCclnV1Lsjrd3d3c9FFF8342A033MAPfvADXnjhBY466ii+9a1v2TMlSdIS1bJhau3qFVPmTAF0JjpYu3pFTa/7/PPPv6rt1FNP5dRTTwWgr6+Pvr6+ms4hSZLaR8uGqYlJ5lfesYOnd4+xrKuTtatX1Dz5XJIkqRItG6agGKgMT5IkqZFa9mo+SZK0NA0MDDAwMNDoMvYxTEmSJNXAMCVJklQDw5QkSVINDFPThBD44Ac/uO/++Pg4hx12GGeddRZQHKc97LDDWLlyJUcffTSrV6/mRz/6UaPKneLMM89k9+7dcz7n1FNP5b777ntV+wMPPMB3vvOdis852+tJkrRUGKamOfjgg3nooYcYGysuCPq9732P5cunXjF43nnnMTQ0xGOPPcYll1zCueeey/bt28s+x/j4+ILWPOE73/kOXV1dVR1bbZiSJGmpM0zN4Mwzz+S2224D4Prrr59zf77TTjuNCy+8kPXr18/5mn/2Z3/Ghz70IU488UQ+9KEPUSgUWLt2LW9/+9vp6enhq1/9KgCf/OQn2bRpEwDvf//7+fCHPwzAX//1X/PHf/zHAPz93/89J5xwAscddxwf+9jHKBSKC5ceeeSR/OIXvwDgz//8z1mxYgUnnXQSH/jAB/jCF76wr5abbrqJE044gWOOOYa7776bl19+mXXr1nHDDTdw3HHHccMNN7Bnzx4+/OEPc8IJJ7By5Uo2btwIwNjYGOeffz7HHnss73//+/eFTkmSlqrWDlPbboQvvhX+rKv4eduNC/Ky559/Pt/85jd58cUX2bZtG+94xzvmfP7xxx/PI488Mu/rPvzww/zDP/wD119/PV/72tdIJpPce++93HvvvVx77bX88z//MyeffDJ33303AKOjozz88MMA3H333Zxyyils376dG264gR/+8Ic88MADdHR08PWvf33Kee69916+9a1v8eCDD3L77be/ahhufHycn/70p/T393PZZZfxmte8hssvv5zzzjuPBx54gPPOO4+/+Iu/4N3vfjc//elPueuuu1i7di179uzhmmuu4aCDDmL79u1cdtllbN26tZJvrSRJbad1F+3cdiNkLoJ8qWck91TxPkDPmppeuqenhyeeeILrr7+eM888c97nxxjLet2zzz6bzs7i3oGbN29m27Zt3HzzzQDkcjkee+wxTj75ZPr7+3n44Yd585vfzK9+9SueeeYZfvzjH3PV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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# returns the optimized weights\n",
    "w_opt = rew.get_weights()\n",
    "\n",
    "# feed the weights to plotting function\n",
    "plot(exp_couplings,calc_couplings,wopt=w_opt)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEHCAYAAAC+1b08AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dfXhU5Z3/8fcXCkWFUhcREJDQGiVQAoQkaIEICkIxhh9QroDKqlSziohiddXFh4jr1lW7KsqKES1qFVBQBKVVpEUBHwjIwwJRQYkYpIBRoogUYu7fHzMZhjyQSTLJmZx8XteVi/OUc74Zks/cc59z7mPOOUREpOFr4nUBIiISHQp0ERGfUKCLiPiEAl1ExCcU6CIiPqFAFxHxiZ9EspGZDQceAZoCs51z95VZfznwALAruOgx59zs4+3zlFNOcXFxcdWtVySmFBUVAfAT9z0nnXhSYGHz1h5WBN8eOhKa/lmLZh5WInVh3bp1Xznn2la0rspAN7OmwExgKFAA5JrZYufc1jKbznfOTY60qLi4ONauXRvp5iIxycwAcM+HLbzY23s74m59PTS99r4LPaxE6oKZfV7Zuki6XFKB7c65z5xzh4F5wMhoFSciItERSaB3BL4Imy8ILitrjJltMrMFZtY5KtWJiEjEonVSdAkQ55xLBJYBz1S0kZllmdlaM1u7b9++KB1aREQgspOiu4DwFncnjp78BMA5Vxg2Oxu4v6IdOedygByA5OTkch2NR44coaCggEOHDkVQlkh0tGjRgk6dOtGsmU4gSsMWSaDnAvFm1pVAkI8DLg7fwMw6OOd2B2czgLyaFFNQUECrVq2Ii4sLnWwSqUvOOQoLCykoKKBr165elyNSK1V2uTjnioHJwBsEgvpF59wWM5tuZhnBzaaY2RYz2whMAS6vSTGHDh2iTZs2CnOpN2ZGmzZt9KlQfCGi69Cdc0uBpWWW3Rk2fRtwWzQKUphLfdPvnPiF7hQtw8y49NJLQ/PFxcW0bduW9PR0AObMmUPbtm3p06cP8fHxDBs2jHfffderckVEQhToZZx00kls3ryZH374AYBly5bRseOxV2lmZmayfv16tm3bxq233sro0aPJy6vRaYNqKy4urpfjiEjDo0CvwIgRI3j99cDddnPnzmX8+PGVbjt48GCysrLIyckpt27JkiX069ePPn36MGTIEPbs2UNJSQlxcXHs378/tF18fDx79uxh3759jBkzhpSUFFJSUli9ejUA2dnZTJgwgf79+zNhwgTy8/MZOHAgSUlJJCUlhT4hlJSUMGnSJLp168bQoUMZMWIECxYsAGDdunWce+659O3bl2HDhrF79+5y9Ur1lf4f5O05AU5OCnx57Fcdfxb6kthw7+tbj/mqKxH1oTc248aNY/r06aSnp7Np0yYmTpzIypUrK90+KSmJJ554otzyAQMG8P7772NmzJ49m/vvv58//vGPjBw5kldeeYUrrriCDz74gC5dutCuXTsuvvhipk6dyoABA9i5cyfDhg0Ltfy3bt3KqlWrOOGEEzh48CDLli2jRYsWbNu2jfHjx7N27Vpefvll8vPz2bp1K3v37iUhIYGJEydy5MgRrrvuOl599VXatm3L/PnzmTZtGk8//XSdvYaNxbp167wuoZzXrhvodQnikZgO9IeWfcIjy7dFtO341M78YXTiMctue3kTc9ccvcn1+vPjmTr0zCr3lZiYSH5+PnPnzmXEiBFVbl/Zc1kLCgrIzMxk9+7dHD58OHRZXGZmJtOnT+eKK65g3rx5ZGZmAvDWW2+xdevRd+9vv/2WAwcOAJCRkcEJJ5wABK7Xnzx5Mhs2bKBp06Z88sknAKxatYqxY8fSpEkT2rdvz+DBgwH4+OOP2bx5M0OHDgXgxx9/pEOHDlX+XCLSsMR0oHspIyODm266iRUrVlBYWHjcbdevX09CQkK55ddddx033ngjGRkZrFixguzsbADOOecctm/fzr59+1i0aBG33347EOgyef/992nRokW5fZ100kmh6Yceeoh27dqxceNGSkpKKtw+nHOOHj168N5771X1Y4tIA6Y+9EpMnDiRu+66i549ex53u7fffpucnByuuuqqcuuKiopCJ1SfeeboaAhmxqhRo7jxxhtJSEigTZs2AFxwwQU8+uijoe02bNhQ4TGLioro0KEDTZo04bnnnuPHH38EoH///ixcuJCSkhL27NnDihUrADjrrLPYt29fKNCPHDnCli1bInwlRKShiOkW+tShZ0bURVKZP4xOLNcNE6lOnToxZcqUCtfNnz+fVatWcfDgQbp27crChQsrbKFnZ2czduxYTj75ZM477zx27NgRWpeZmUlKSgpz5swJLZsxYwbXXnstiYmJFBcX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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# find index corresponding to the desired coupling\n",
    "idx = labels.index(\"21\")\n",
    "# plot the histogram\n",
    "plt.hist(calc_data[:,idx],bins=75,density=True,alpha=0.55)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(np.average(calc_data[:,idx]),label=\"MD average\",ls=\"--\",lw=3)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(exp_data[idx,0],c='k',label=\"experimental\",ls=\"--\",lw=3)\n",
    "\n",
    "# plot the histogram with the new weights\n",
    "plt.hist(calc_data[:,idx],bins=75,density=True,alpha=0.55,weights=w_opt)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(np.average(calc_data[:,idx],weights=w_opt),label=\"MD average, reweighted\",ls=\"--\",lw=3,c='orange')\n",
    "\n",
    "plt.xlabel(\"J coupling (Hz)\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 𝜃-selection"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# theta: 0.1\n",
      "# theta: 0.5\n",
      "# theta: 1\n",
      "# theta: 2\n",
      "# theta: 3\n",
      "# theta: 4\n",
      "# theta: 5\n",
      "# theta: 7.5\n",
      "# theta: 10\n",
      "# theta: 15\n",
      "# theta: 20\n",
      "# theta: 40\n",
      "# theta: 50\n",
      "# theta: 100\n",
      "# theta: 500\n",
      "# theta: 5000\n"
     ]
    }
   ],
   "source": [
    "#this is a trick to get the parent directory \n",
    "#directory_to_bme = os.getcwd()[:-8]\n",
    "#sys.path.append(directory_to_bme)\n",
    "#import bme_reweight as bme\n",
    "\n",
    "# define name of files                                                                               \n",
    "exp_couplings = 'exp.dat'\n",
    "calc_couplings = 'sim_a99SB-UCB.dat'\n",
    "\n",
    "\n",
    "# initialize reweighting class                                                                                                                                \n",
    "rew = bme.Reweight()\n",
    "\n",
    "# load data                                                                                      \n",
    "rew.load(exp_couplings,calc_couplings)\n",
    "\n",
    "# do minimization for different values of theta\n",
    "thetas= [0.1,0.5,1,2,3,4,5,7.5,10,15,20,40,50,100,500,5000]\n",
    "results = []\n",
    "for t in thetas:\n",
    "    # do the minimization\n",
    "    chi2_jc_before,chi2_jc_after, srel = rew.optimize(theta=t)\n",
    "    # calculate agreement with NOE, and write output to a temporary file\n",
    "    results.append( [np.exp(srel),chi2_jc_before,chi2_jc_after])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x7f204d6ce390>"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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XXYZAA8//DCjRo1KegYRERGJTuqfE0US5uKLL446goiIiCRZxhd/RxxxBAsWLIjrPps0acJ77723Vb/7888/c/HFFzNnzhwAhg4dyp/+9CeGDBlCfn4w1LF3795ceeWVzJ07lxNPPJEZM2YAcM8997B69WoGDBhAu3btOOigg3jnnXcoKioiPz+ftm3bbnRfAwYMYLvttqNfv360a9eOQw89lLfeeouVK1cyYsQIjjzySAoKCujevTszZsxg7733ZtGiRTz44IO0atWKXr16MWXKFMyMnj170rdv3234q4mIiEgyZHzxl2quuOIKjjrqKMaNG0dxcTGrV69m6tSpjBw5ko8//hh359BDD+Woo46iXr165e6roKCA6dOnM3nyZHr27LmhSNycoqIiPvnkEyZOnMitt97K66+/zkMPPUS9evWYOXMmM2bMoGXLlgBMnz6dhQsXbtjnypUr4/MHEBERkYTK+OJva1voEuXNN9/cMA4vOzubunXr8t5773HqqaeSmxss13Paaafx7rvvcvLJJ5e7r3POOQeA//u//2PVqlUVFminnXYaAAcffDBz584Fgr/PX//6VwAOOOAADjzwQAB233135syZw+WXX84JJ5xA+/btt+4Bi4iISFJpwkfEbrjhBlq2bLmhRa0yqlWrRklJyYbLm56xZNOlVipaeqVGjRpAUHQWFRWVe9t69erx+eef065dOx5++GF69+5dmegiIiISERV/ERs0aBDTp09n+vRgvetjjjmGoUOHAlBcXMyvv/7KkUceyfPPP09BQQFr1qxh3LhxHHnkkey8884sWbKEZcuWsX79esaPH7/Rvp9++mkgaL2rW7cudevWrXS+ww8/nLFjxwIwc+ZMvvzySwCWLl1KSUkJp59+OgMHDmTatGlb/TcQERGR5Mn4bt+oFBUVbWhpi3XffffRp08fRowYQXZ2NkOHDuWwww6je/fuGyZs9O7dm1atWgFw880307ZtWxo3bsw+++yz0b5q1qxJq1atKCws3DBZpLIuueQSunXrxn777cc+++zD/vvvT926dVm4cCE9evTY0PJ4xx13bNX+RUREMsG9997Lrrvuytlnnx11lOSf2zfZyjq379dff82+++4bUaLA559/zoUXXsgnn3ySkP23a9eOe+65hzZt2mzTfoqLiyksLKRmzZp8//33HHvsscyaNYuc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O+pIcaVuXxEREZEY48aNY9WqVXTv3r3KFX4VUfEnIiIiGae0y7d79+7RBomAij8RERHJKD/88ANvvvkmRx11FHvuuWfUcZJOxZ+IiIhklEcffRSAnj17RhskIprwISIiIhmjuLiY3XbbjRUrVvDTTz+Rm1vmnIi0pwkfIiIiIsCbb77J/PnzOeecc6ps4VcRFX8iIiKSMUaMGAFk3tp+sdTtKyIiIhlh+fLlNGrUiN13352ZM2dW6XP5qttXREREMt6YMWP4/fff6dWrV5Uu/Cqilj8RERHJCK1bt+aLL75gwYIF7LLLLlHHSSi1/ImIiEhG++yzz/jss8848cQTq3zhVxEVfyIiIlLljRw5Esjctf1iqdtXREREqrR169ax6667kpOTw/z586levXrUkRJO3b4iIiKSsV588UVWrFhBt27dMqLwq4iKPxEREanS8vPzAejevXu0QVKEij8RERGpsubPn8+rr77KYYcdxr777ht1nJSg4k9ERESqrMceewx3p1evXlFHSRma8CEiIiJVUklJCXvuuSc///wzixcvZvvtt486UtJowoeIiIhknHfeeYcffviBs846K6MKv4qo+BMREZEqqXSiR48ePSJOklrU7SsiIiJVzq+//souu+xCkyZN+PbbbzPuXL7q9hUREZGM8tRTT7Fu3Tp69uyZcYVfRVT8iYiISJWTn59PVlYWF1xwQdRRUo6KPxEREalSZsyYwSeffMLxxx9P48aNo46TclT8iYiISJUycuRIQBM9NkcTPkRERKTK+P3332nSpAnuzsKFC8nJyYk6UiQ04UNEREQywoQJE/jll184//zzM7bwq0jSiz8zyzezJWY2YzPXdzWzL8zsSzP7wMwOirlubrh9uplNSV5qERERSQda269iSe/2NbP/A1YDo9z9gDKu/xPwtbuvMLPjgQHufmh43Vygjbsv3dL7U7eviIhIZli0aBFNmzaldevWfPrpp1HHiVR53b7Vkh3G3SebWfNyrv8g5uJHQJNEZxIREZH0N2rUKEpKSujVq1fUUVJaqo/56wW8HHPZgVfNbKqZ9dncL5lZHzObYmZTioqKEh5SREREouXu5OfnU7NmTbp06RJ1nJSW9Ja/LWVmRxMUf0fEbD7C3Rea2U7Aa2b2jbtP3vR33X0YMAyCbt+kBBYREZHIvP/++3z33Xd07dqVHXbYIeo4KS0lW/7M7EBgOHCKuy8r3e7uC8P/lwDjgLbRJBQREZFUookeWy7lij8zawb8Bzjf3b+N2Z5rZnVKfwbaA2XOGBYREZHM8dtvvzF27FiaN2/O0UcfHXWclJf0bl8zexJoB+xoZguAW4DqAO7+MHAz0AB4KDwRc5G7twF2BsaF26oBY9x9UrLzi4iISGp55plnWLNmDVdffTVZWSnXrpVydIYPERERSWtHHHEEH3zwAT/88AN5eXlRx0kJOsOHiIiIVEmzZs3i/fff57jjjlPht4VU/ImIiEjaGjlyJKCJHpWhbl8RERFJS0VFRTRt2pR169axePFiatasGXWklKFuXxEREalyXn75ZX766SfOO+88FX6VoOJPRERE0pLW9ts66vYVERGRtPPzzz/TpEkT9t9/fz777DPCpeAkpG5fERERqVKeeOIJioqK6NWrlwq/SlLLn4iIiKQVd+eAAw5g9uzZLFq0iAYNGkQdKeWo5U9ERESqhNGjR7Prrrsyc+ZMqlevzqRJOtlXZSX99G4iIiIiW2P06NH06dOHgoICANauXUufPn0A6Nq1a5TR0oq6fUVERCQtNG/enHnz5m24nJWVRUlJCXl5ecydOze6YCmovG5fFX8iIiKSFmIndpQWfqXbS3+WgMb8iYiISForKCigRo0awMaFH0CzZs2iipWWVPyJiIhISissLOTss89m/fr1VK9efaPCr3bt2gwaNCjCdOlHxZ+IiIikLHfnwgsvZPz48XTo0IF///vf5OXlYWbk5eUxbNgwTfaoJI35ExERkZR19dVXc/fdd9O2bVtef/116tSpE3WktKAxfyIiIpJ27r77bu6++2722Wcfxo8fr8IvTlT8iYiISMp59NFHufrqq2nSpAmTJk2iYcOGUUeqMlT8iYiISEp56aWX6N27N/Xr12fSpEnk5eVFHalKUfEnIiIiKeO9997jrLPOIicnh/Hjx7P//vtHHanK0endREREJCV88cUXnHjiiRQVFfHiiy9y2GGHRR2pSlLxJyIiIpH74Ycf6NixI7/++itPPPEExx9/fNSRqix1+4qIiEiklixZQvv27Vm8eDH//Oc/tW5fgqn4ExERkcisWrWK448/ntmzZ3P99dfz17/+NepIVZ6KPxEREYnEunXr6Ny5M9OmTaN3794MHDgw6kgZQcWfiIiIJF1xcTHnnXceb731FqeddhpDhw7FzKKOlRFU/ImIiEhSuTuXXnopzz33HEcffTSjR4+mWjXNQU0WFX8iIiKSVLfccguPPPIIrVq1Yty4cdSsWTPqSBlFxZ+IiIgkzQMPPMBtt93GHnvswcSJE6lbt27UkTKOij8RERFJiieffJIrrriCXXbZhVdeeYVddtkl6kgZScWfiIiIJNyrr75Kt27dqFu3Li+//DJ77LFH1JEyloo/ERERSahPPvmE0047jezsbF544QVatmwZdaSMpqk1IiIikjDffPMNnTp1Yu3atTz33HMcddRRUUfKeCr+REREJCEWLFhA+/btWbZsGSNGjKBz585RRxLU7SsiIiIJsGzZMtq3b8/8+fMZPHgwPXv2jDqShFT8iYiISFytWbOGE088ka+//pqrrrqKq6++OupIEkPFn4iIiMRNYWEhZ5xxBh999BEXXHABd911l07blmJU/ImIiEhclJSU0KNHDyZNmsQJJ5zA8OHDycpSqZFq9IyIiIjINnN3/va3vzF69GgOP/xwnn76aapXrx51LClD0os/M8s3syVmNmMz15uZ3W9ms83sCzNrHXNdNzP7LvzXLXmpRUREpDyDBw/mvvvuY//99+fFF18kNzc36kiyGVG0/D0KdCzn+uOBvcJ/fYChAGZWH7gFOBRoC9xiZvUSmlREREQqNHz4cK6//nqaN2/OpEmTqF+/ftSRpBxJL/7cfTKwvJybnAKM8sBHwA5m1gjoALzm7svdfQXwGuUXkSIiIpJg48aN46KLLqJhw4ZMmjSJJk2aRB1JKpCKizw3BubHXF4Qbtvc9v9hZn0IWg3JyclJTEoREZEM9/bbb3POOedQu3ZtJkyYwN577x11JNkCVXLCh7sPc/c27t6mWrVUrG9FRETS22effcbJJ5+Mu/Of//yHQw45JOpIsoVSsfhbCDSNudwk3La57SIiIpJEs2fPpmPHjqxevZonnniC4447LupIUgmpWPy9CFwQzvr9I/Cruy8GXgHam1m9cKJH+3CbiIiIJMnixYvp0KEDS5Ys4cEHH+TMM8+MOpJUUtL7RM3sSaAdsKOZLSCYwVsdwN0fBiYCnYDZQAHQI7xuuZndBnwa7urv7l7exBERERGJo5UrV3L88cczZ84cbr31Vv7yl79EHUm2grl71BkSKjc319esWRN1DBERkbS2du1aOnbsyOTJ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XHvttcyePZu6devSv39/rrzySmrXrh11PJFtUt6EDy31IiIiGefDDz+kf//+vP/+++Tk5HDppZdy0003ac0+yQgq/kREJGPMnj2b6667jmeffZbs7GxOP/10br/9dlq0aBF1NJGkUfEnIiJV3tKlS7ntttsYOnQoxcXFHHbYYdx1110cccQRUUcTSToVfyIiUmWtW7eO+++/n9tvv51Vq1axxx57cPvtt3PGGWdgZlHHE4mEij8REalySkpKGDNmDDfccAPz58+nQYMG3HvvvfzlL38hJycn6ngikVLxJyIiVcqbb75J//79mTZtGrVq1aJ///5cd9117LDDDlFHE0kJKv5ERKRK+Oqrr7j66quZOHEiWVlZnHfeeQwcOJC8vLyoo4mkFBV/IiKS1hYvXszNN99Mfn4+AMcccwx33nknBx98cMTJRFKTij8REUlLq1ev5u677+aee+5h3bp17LfffgwePJhOnTppModIOVT8iYhIWikqKiI/P5+bb76ZJUuW0KhRIwYMGECPHj2oVk0fayIV0btERETSgrszYcIErr76ar755hu22247brnlFq666iq22267qOOJpA0VfyIikvKmTp1Kv379ePvtt6lWrRoXXnghAwYMoFGjRlFHE0k7WVEHEBER2Zy5c+fStWtX2rRpw7vvvstJJ53E9OnTeeSRR1T4iWwltfyJiEjKWbFiBbfffjv3338/RUVFtGnThrvuuoujjz466mgiaU/Fn4iIpIz169fz0EMPMXDgQFasWEFeXh4DBw7knHPOIStLnVUi8aDiT0REIufuPPPMM1x77bXMnTuXHXbYgTvvvJPLL7+cmjVrRh1PpEpR8SciIpF677336NevHx9//DE1atTgyiuv5IYbbqBBgwZRRxOpklT8iYhIJGbNmsW1117L888/T1ZWFmeddRa33347e+yxR9TRRKo0FX8iIpJUS5Ys4dZbb+WRRx7B3TnyyCO56667+OMf/xh1NJGMoOJPRESSoqCggHvvvZc777yTNWvWsNdee3HHHXfQuXNnnY5NJIkimTplZh3NbJaZzTaza8u4vruZ/WJm08N/vWOu62Zm34X/uiU3uYiIVFZxcTEjR46kRYsW3HTTTdSqVYv777+fL7/8klNPPVWFn0iSmbsn9w7NsoFvgeOABcCnwDnuPjPmNt2BNu5+2Sa/Wx+YArQB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\n",
      "text/plain": [
       "<Figure size 720x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#handling tickers in logspace is a abit painful\n",
    "from matplotlib.ticker import NullFormatter\n",
    "from matplotlib import ticker\n",
    "\n",
    "results = np.array(results)\n",
    "# define the figure\n",
    "fig, ax1 = plt.subplots(figsize=(10, 8))\n",
    "plt.subplots_adjust(left=0.15, right=0.95, top=0.83, bottom=0.12)\n",
    "# plot j couplings\n",
    "ax1.plot(results[:,0],results[:,2],label=\"J-couplings\",c='k',lw=1.75)\n",
    "# plot NOE\n",
    "#ax1.plot(results[:,0],results[:,4],label=\"NOE\",c='#C1CDCD',ls=\"--\",lw=1.75)\n",
    "# set tickers\n",
    "ax1.set_xticks([0.01,0.1,0.2,0.5,1.0])\n",
    "ax1.xaxis.set_major_formatter(ticker.ScalarFormatter())\n",
    "ax1.xaxis.set_major_formatter(ticker.FormatStrFormatter(\"%3.1f\"))\n",
    "ax1.xaxis.set_minor_formatter(ticker.NullFormatter())\n",
    "\n",
    "# now make a new axis just to show the theta values\n",
    "ax2 = ax1.twiny()\n",
    "ax2.plot(results[:,0],results[:,2],c='w',lw=0.01)\n",
    "\n",
    "# draw ticks at selected theta\n",
    "#sele = [0.1,1,2,5,10,5000]\n",
    "sele = [1,2,3,4,5,7.5,10,15,20,40,50,100,500]\n",
    "iis = [thetas.index(s) for s in  sele]\n",
    "ax2.set_xticks(results[iis,0])\n",
    "ax2.set_xticklabels([\"%.1f\"% s for s in sele],rotation=60)\n",
    "#ax1.scatter(results[iis,0],results[iis,4],c='#C1CDCD')\n",
    "ax1.scatter(results[iis,0],results[iis,2],c='k')\n",
    "\n",
    "ax1.set_xlabel(\"Neff\")\n",
    "ax2.set_xlabel(r\"$\\theta$\")\n",
    "ax1.set_ylabel(r\"$\\chi^2$\")\n",
    "ax1.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "# theta: 10\n",
      "# CHI2 before minimization:       1.9450\n",
      "# CHI2 after minimization:        0.1259\n",
      "# Fraction of effective frames:   0.5164\n"
     ]
    }
   ],
   "source": [
    "# do optimization using theta=10                                                                                                                               \n",
    "chi2_before,chi2_after, srel = rew.optimize(theta=10)\n",
    "\n",
    "print (\"# CHI2 before minimization:     %8.4f\" % (chi2_before))\n",
    "print (\"# CHI2 after minimization:      %8.4f\" % (chi2_after))\n",
    "print (\"# Fraction of effective frames: %8.4f\" % (np.exp(srel)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "29978\n"
     ]
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlMAAAHVCAYAAADVQH6wAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nOzde3hb1YHv/d/CEWAulTtpeokdSNrSlIsMSQO0E+6a1iWDaZrpBDgvnRpOJ21P32bgnOZ9w9shFIaWnEln8FDOQAOdup0WSIDUicolMAqlQFtIHAeLkqR0aAJ26DQNWC1gQBbr/WNLxjbWbW9JW1v6fp7Hj6W1tbWXZFn6aa211zLWWgEAAMCdg/yuAAAAQJARpgAAADwgTAEAAHhAmAIAAPCAMAUAAOABYQoAAMCDaX4d+F3vepedPXu2X4cHAAAoWl9f3x+stTOm2uZbmJo9e7a2bdvm1+EBAACKZozZm2sb3XwAAAAeEKYAAAA8IEwBAAB44NuYqamkUikNDg7qtdde87sq8ODQQw9VW1ubQqGQ31UBAKDiaipMDQ4O6sgjj9Ts2bNljPG7OnDBWqsDBw5ocHBQc+bM8bs6AABUXE1187322muaPn06QSrAjDGaPn06rYsAgIZRU2FKEkGqDvA3BAA0kpoLU34zxujiiy8euz46OqoZM2bovPPOkyT19PRoxowZmjdvno455hh1dHTo5z//uV/VBQAAPiNMTXL44Yfrqaee0sjIiCTpwQcfVGtr64TbXHDBBerv79czzzyjlStXasmSJdq5c6cf1QUAAD4jTE1h0aJFuueeeyRJt99+uy666KKctz377LO1bNkyrV27tlrVAwAANSTQYaq3f0gLV2/RnJX3aOHqLertHyrL/V544YW644479Nprr2lgYECnnnpq3tvPnz9fu3btKsuxAQBAsNTU1Ail6O0f0hUbEhpJpSVJQ8MjumJDQpK0eF5rvl0Lam9v1549e3T77bdr0aJFBW9vrfV0PAAAEFyBbZlas3n3WJDKGkmltWbz7rLc//nnn6+vfvWrebv4svr7+3XssceW5bgAACBYAtsytW94pKTyUl166aVqaWlRJBLRT3/605y3e/jhh7V27Vo99NBDZTkuAAAIlsCGqZktzRqaIjjNbGkuy/23tbVp+fLlU25bt26dHn30Ub366quaM2eO7r77blqmAABoUIENUys65k4YMyVJzaEmreiY6+l+X3755beVnXXWWTrrrLMkSV1dXerq6vJ0DAAAUD8CG6ayg8zXbN6tfcMjmtnSrBUdcz0PPgcAAChFYMOU5AQqwhMAAPBTYM/mAwAAjamnp0c9PT1+V2MMYQoAAMADwhQAAIAHhCkAAAAPCFOTGGN08cUXj10fHR3VjBkzdN5550ly+mlnzJihefPm6ZhjjlFHR4d+/vOf+1XdCRYtWqTh4eG8tznrrLO0bdu2t5Xv2LFD9957b8nHzHV/AAA0CsLUJIcffrieeuopjYw4E4I++OCDam2deMbgBRdcoP7+fj3zzDNauXKllixZop07dxZ9jNHR0bLWOevee+9VS0uLq33dhikAABodYWoKixYt0j333CNJuv322/Ouz3f22Wdr2bJlWrt2bd77/PrXv67PfvazWrhwoT772c8qnU5rxYoVOvnkk9Xe3q7vfOc7kqQvf/nL2rRpkyTp05/+tC699FJJ0r/927/pa1/7miTphz/8oU455RSddNJJ+sIXvqB02pm4dPbs2frDH/4gSfqHf/gHzZ07V6eddpouuugifetb3xqry5133qlTTjlFH/rQh/TII4/ojTfe0KpVq7Ru3TqddNJJWrdunV555RVdeumlOuWUUzRv3jxt3LhRkjQyMqILL7xQxx57rD796U+PhU4AABpVsMPUwHrp+hOkr7c4vwfWl+VuL7zwQt1xxx167bXXNDAwoFNPPTXv7efPn69du3YVvN+nn35a//Ef/6Hbb79d3/3udxUOh7V161Zt3bpVt9xyi37729/q9NNP1yOPPCJJGhoa0tNPPy1JeuSRR3TGGWdo586dWrdunR577DHt2LFDTU1N+tGPfjThOFu3btXdd9+tJ598Uvfdd9/buuFGR0f1xBNPqLu7W1dffbUOPvhgXXPNNbrgggu0Y8cOXXDBBfrGN76hc845R0888YQeeughrVixQq+88opuuukmHXbYYdq5c6euvvpq9fX1lfLUAgBQd4I7aefAeim2XEplWkaSzzvXJal9qae7bm9v1549e3T77bdr0aJFBW9vrS3qfs8//3w1NztrBz7wwAMaGBjQXXfdJUlKJpN65plndPrpp6u7u1tPP/20jjvuOL300kt64YUX9Itf/EI33HCDvv/976uvr08nn3yyJKel6N3vfveE4zz22GP61Kc+pUMPPVSHHnqoOjs7J2xfsmSJJOkjH/mI9uzZM2VdH3jgAW3atGmsReu1117Tc889p5/97Gdjaxa2t7ervb29qMcOAEC9KipMGWMul/R5SVZSQtIl1trXxm3vkrRG0lCm6EZr7a3lreok8WveClJZqRGn3GOYkpzg89WvflU//elPdeDAgby37e/vL2qh48MPP3zssrVW3/72t9XR0fG22w0PD+v+++/XGWecoRdffFHr16/XEUccoSOPPFLWWn3uc5/TddddV/qDyjjkkEMkSU1NTTnHb1lrdffdd2vuXG9rHQIAUO8KdvMZY1olLZe0wFp7gqQmSRdOcdN11tqTMj+VDVKSlBwsrbxEl156qa666ipFIpG8t3v44Ye1du1a/e3f/q0k6cYbb9SNN95Y8P47Ojp00003KZVKSZJ+/etf65VXXpEkffSjH1V3d7fOOOMMnX766frWt76l008/XZIUjUZ111136fe//70k6cUXX9TevXsn3PfChQsVi8X02muv6eWXX9ZPfvKTgvU58sgj9ac//WlC/b797W+Ptbr19/dLks444wzddtttkqSnnnpKAwMDBe8bAIB6VuyYqWmSmo0x0yQdJmlf5apUpHBbaeUlamtrG+vOmiw7UPtDH/qQvvnNb+ruu+8ea5natWuXpk+fXvD+P//5z+u4447T/PnzdcIJJ+gLX/jCWCvR6aefrtHRUX3wgx/U/Pnz9eKLL46FqeOOO07XXnutPvGJT6i9vV0f//jH9cILL0y475NPPlnnn3++2tvbde655yoSiSgcDuetz9lnn62nn356bAD6lVdeqVQqpfb2dh1//PG68sorJUlf+tKX9PLLL+vYY4/VqlWr9JGPfKTgYwUAoJ6ZYsb7GGP+TtI3JI1IesBa+39N2t4l6TpJ+yX9WtLl1trn893nggUL7OSB0Tt37iyqu0zS28dMSVKoWeq8oSzdfG6dd9552rBhgw4++GDf6iBJL7/8so444gi9+uqrOuOMM7R27VrNnz+/ascv6W8JAEAJsuvydXV1Ve2Yxpg+a+2CqbYV0833TkmfkjRH0kxJhxtjLp50s5ik2dbadkkPSvp+jvtaZozZZozZtn///lIew9u1L3WCU3iWJOP89jlISdJPfvIT34OUJC1btkwnnXSS5s+fr7/6q7+q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\n",
      "text/plain": [
       "<Figure size 720x576 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# returns the optimized weights\n",
    "w_opt = rew.get_weights()\n",
    "\n",
    "# feed the weights to plotting function\n",
    "plot(exp_couplings,calc_couplings,wopt=w_opt)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAEHCAYAAAC+1b08AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3dfXhU5Z3/8fcXCkWFokVEBBTaooAlQEhAi1AREIoYFihXwIdVqWYVEZXqqj8fQFq3bnVXRVkR1KK2AhWUgtIqUrGCVQPysAgqVKNGKSIKytNCzPf3R4bJEGaYIZmnnHxe15XLc858c86dMXzmzn3OuY+5OyIiUvvVy3QDREQkORToIiIBoUAXEQkIBbqISEAo0EVEAkKBLiISEN9JpMjMBgEPAPWBR9397iqvXwrcA3wa2vSQuz96uH0ef/zx3rZt2yNtr0hW2bFjR3i5adOm0Yv2VdbQMEZNEn29d394+XuNGqT8eJJeK1eu/MLdm0d7LW6gm1l9YCowACgFis1sgbuvr1I6x93HJdqotm3bsmLFikTLRbKSmYWXY97T8XRlDRek/r6Ptje/EF5ecfd5KT+epJeZfRTrtUSGXHoAm9z9A3ffB8wGhiarcSIikhyJBHor4JOI9dLQtqpGmNlaM5trZm2S0joREUlYsk6KLgTaunsOsBh4IlqRmRWZ2QozW7F169YkHVpERCCxk6KfApE97tZUnvwEwN23Raw+Cvw22o7cfTowHSAvL++QwcT9+/dTWlrK3r17E2iWSHI0atSI1q1b06CBTiBK7ZZIoBcD7c2sHRVBPgq4ILLAzFq6++bQagGwoTqNKS0tpUmTJrRt2/agk00iqeLubNu2jdLSUtq1a5fp5ojUSNwhF3cvA8YBL1IR1H9093fMbLKZFYTKxpvZO2a2BhgPXFqdxuzdu5dmzZopzCVtzIxmzZrpr0IJhISuQ3f3RcCiKtvuiFi+BbglGQ1SmEu66XdOgkJ3ilZhZlx00UXh9bKyMpo3b86QIUMAmDlzJs2bN6dbt260b9+egQMH8vrrr2equSIiYQr0Ko455hjWrVvHnj17AFi8eDGtWh18lWZhYSGrVq1i48aN3HzzzQwfPpwNG6p12uCIlZWVpeU4IlL7KNCjGDx4MC+8UHG33axZsxg9enTM2r59+1JUVMT06dMPeW3hwoX07NmTbt260b9/f7Zs2UJ5eTlt27Zl+/bt4br27duzZcsWtm7dyogRI8jPzyc/P5/ly5cDMGnSJC6++GJ69erFxRdfTElJCb179yY3N5fc3NzwXwjl5eWMHTuWDh06MGDAAAYPHszcuXMBWLlyJT/96U/p3r07AwcOZPPmzYe0V47cgf8Hubm5sYuOy638SoMft/pe+Euyw10vrD/oK2XcPSNf3bt396rWr19/yLZ0O+aYY3zNmjU+YsQI37Nnj3fp0sVfeeUVP++889zd/Xe/+51fffXVB33Pc88954MGDTpkX19++aWXl5e7u/uMGTN8woQJ7u4+fvx4f/zxx93d/Y033vB+/fq5u/vo0aP9tddec3f3jz76yDt06ODu7hMnTvTc3FzfvXu3u7vv2rXL9+zZ4+7u77//vh94L5955hn/2c9+5t9++61v3rzZjz32WH/mmWd83759fuaZZ/rnn3/u7u6zZ8/2yy67LEnvWDBkw++eBNevn3/noK+aAFZ4jFxN6KRopty3+H0eWLIxodrRPdrwm+E5B2275dm1zHqr8ibXa/u15/oBp8bdV05ODiUlJcyaNYvBgwfHrfcYc3iUlpZSWFjI5s2b2bdvX/iyuMLCQiZPnsxll13G7NmzKSwsBODll19m/frKT++vv/6anTt3AlBQUMBRRx0FVFyvP27cOFavXk39+vV5//33AVi2bBkjR46kXr16nHjiifTt2xeA9957j3Xr1jFgwAAAvv32W1q2bBn35xKR2iWrAz2TCgoKuOGGG1i6dCnbtm07bO2qVavo2LHjIduvueYaJkyYQEFBAUuXLmXSpEkAnHnmmWzatImtW7cyf/58brvtNqBiyOSNN96gUaNGh+zrmGOOCS/fd999tGjRgjVr1lBeXh61PpK7c/rpp/P3v/893o8tIrWYxtBjGDNmDBMnTqRz586HrXv11VeZPn06V1xxxSGv7dixI3xC9YknKmdDMDOGDRvGhAkT6NixI82aNQPg3HPP5cEHHwzXrV69Ouoxd+zYQcuWLalXrx5PPfUU3377LQC9evVi3rx5lJeXs2XLFpYuXQrAaaedxtatW8OBvn//ft55550E3wkRqS2yuod+/YBTExoiieU3w3MOGYZJVOvWrRk/fnzU1+bMmcOyZcvYvXs37dq1Y968eVF76JMmTWLkyJEcd9xx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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# find index corresponding to the desired coupling\n",
    "idx = labels.index(\"21\")\n",
    "# plot the histogram\n",
    "plt.hist(calc_data[:,idx],bins=75,density=True,alpha=0.55)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(np.average(calc_data[:,idx]),label=\"MD average\",ls=\"--\",lw=3)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(exp_data[idx,0],c='k',label=\"experimental\",ls=\"--\",lw=3)\n",
    "\n",
    "# plot the histogram with the new weights\n",
    "plt.hist(calc_data[:,idx],bins=75,density=True,alpha=0.55,weights=w_opt)\n",
    "# make vertical bar corresponding to the MD average\n",
    "plt.axvline(np.average(calc_data[:,idx],weights=w_opt),label=\"MD average, reweighted\",ls=\"--\",lw=3,c='orange')\n",
    "\n",
    "plt.xlabel(\"J coupling (Hz)\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x7f20946b1780>]"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAY0AAAD4CAYAAAAQP7oXAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3de5QdVZ3o8e/PxKCjAyrkOghoR4njhFFReyJ6Lw4LRgmOY3wEDeMDHRx8wMzc5XXuNNcRmEiUh8qIBBgkgYCRBEGhhwTyFgh5dkIISaBJ50Xe3UknnWe/f/ePs0+n+nTVOfs8q07377NWr65Tj127TtWpX9Xeu3aJqmKMMcb4eF3cGTDGGFM9LGgYY4zxZkHDGGOMNwsaxhhjvFnQMMYY42143BkopzPOOENramrizoYxxlSV1atX71fVkWHTBnXQqKmpoaGhIe5sGGNMVRGR7VHTrHjKGGOMNwsaxhhjvFnQMMYY482ChjHGGG8WNIwxxnizoGGMMcabBQ1jjDHeLGiYRHl6/R72H+2IOxvGmAgWNExiHG7v4ju/WcM37l8Zd1aMMREsaJjE6OlJvRBs58ETMefEGBPFgoYxxhhvFjSMMcZ4s6BhjDHGmwUNY4wx3ixoGGOM8WZBwySGxp0BY0xOXkFDRMaJSKOINIlIXcj0U0Rklpu+QkRqAtOuc+MbReTSwPhpItIsIusz0polImvd3zYRWevG14jIicC0ewrdaJNsEncGjDGRcr65T0SGAVOATwI7gVUiUq+qGwOzXQUcVNVzRWQicAvwZREZA0wEzgPeASwQkfeqag/wAHAn8GBwfar65cC6fw60BSZvVtXz899MY4wxpeBzpzEWaFLVLaraCcwExmfMMx6Y7oYfBS4REXHjZ6pqh6puBZpceqjqs0Br1Erd8l8CHs5je4wxxpSRT9A4C9gR+LzTjQudR1W7Sd0dnO65bJQLgX2quikwbpSIvCAiz4jIhWELicjVItIgIg0tLS2eqzLGGOMjyRXhV9D/LmMP8E5V/RDwfeC3InJq5kKqeq+q1qpq7ciRIyuUVWOMGRp8gsYu4JzA57PduNB5RGQ4cBpwwHPZAVwaXwBmpce5Iq4Dbng1sBl4r0f+TZVQtfZTxiSdT9BYBYwWkVEiMoJUxXZ9xjz1wJVueAKwSFNngHpgomtdNQoYDfh0Yfo3wCuqujM9QkRGukp5ROTdLq0tHmmZKpOqzjLGJFHO1lOq2i0i1wJzgWHANFXdICKTgAZVrQemAg+JSBOpyu2JbtkNIvIIsBHoBq5xLacQkYeBi4AzRGQncIOqTnWrncjACvBPAJNEpAvoBb6jqpEV6cYYY0pPBnORQG1trTY0NMSdDePpwNEOPnLTAt72phGs+dEn486OMUOWiKxW1dqwaUmuCDfGGJMwFjSMMcZ4s6BhEmcwF5kaU+0saBhjjPFmQcMkjjW5NSa5LGgYY4zxZkHDGGOMNwsaxhhjvFnQMMYY482ChjHGGG8WNExi2NMZxiSfBQ2TONbg1pjksqBhjDHGmwUNY4wx3ixoGGOM8WZBwxhjjDcLGsYYY7xZ0DCJYT2iG5N8XkFDRMaJSKOINIlIXcj0U0Rklpu+QkRqAtOuc+MbReTSwPhpItIsIusz0rpRRHaJyFr39+lcaZnBxTq5NSa5cgYNERkGTAEuA8YAV4jImIzZrgIOquq5wO3ALW7ZMcBE4DxgHHCXSw/gATcuzO2qer77m+ORljHGmArwudMYCzSp6hZV7QRmAuMz5hkPTHfDjwKXSOqlCOOBmaraoapbgSaXHqr6LNCaR14j0zLGGFMZPkHjLGBH4PNONy50HlXtBtqA0z2XDXOtiKxzRVhvzSMfiMjVItIgIg0tLS0eqzLGGOMriRXhdwPvAc4H9gA/z2dhVb1XVWtVtXbkyJHlyJ8pM6sQNya5fILGLuCcwOez3bjQeURkOHAacMBz2X5UdZ+q9qhqL/BrThZB5Z2WMcaY0vIJGquA0SIySkRGkKqMrs+Ypx640g1PABapqrrxE13rqlHAaGBltpWJyJmBj58H0q2r8k7LVCdrPWVMcg3PNYOqdovItcBcYBgwTVU3iMgkoEFV64GpwEMi0kSqcnuiW3aDiDwCbAS6gWtUtQdARB4GLgLOEJGdwA2qOhW4VUTOJ9VT9jbg27nSMsYYUxmig7gAuba2VhsaGuLOhvHUcqSDv5q8gDPePIKGf/9k3NkxZsgSkdWqWhs2LYkV4cYYYxLKgoYxxhhvFjSMMcZ4s6BhEkPtLeHGJJ4FDZNA1ubWmKSyoGGMMcabBQ1jjDHeLGgYY4zxZkHDGGMS7nB7F7sPnYg7G4AFDWOMSbxP//I5Pn7zorizAVjQMEliLW6NCbXzYDLuMsCChkkg6+XWmOSyoGGMMcabBQ1jjDHeLGiYxBnEvfUbU/UsaJjksLoMYxLPgoYxxhhvFjRMclixlDGJ5xU0RGSciDSKSJOI1IVMP0VEZrnpK0SkJjDtOje+UUQuDYyfJiLNIrI+I63bROQVEVknIn8Qkbe48TUickJE1rq/ewrdaJNs1uTWmOTKGTREZBgwBbgMGANcISJjMma7CjioqucCtwO3uGXHABOB84BxwF0uPYAH3LhM84G/VNUPAK8C1wWmbVbV893fd/w20RhjTKn43GmMBZpUdYuqdgIzgfEZ84wHprvhR4FLRETc+Jmq2qGqW4Emlx6q+izQmrkyVZ2nqt3u43Lg7Dy3yRhjTJn4BI2zgB2BzzvduNB53Am/DTjdc9ls/gF4KvB5lIi8ICLPiMiFYQuIyNUi0iAiDS0tLXmsyhhjTC6JrQgXkR8C3cAMN2oP8E5V/RDwfeC3InJq5nKqeq+q1qpq7ciRIyuXYWOMGQJ8gsYu4JzA57PduNB5RGQ4cBpwwHPZAUTkG8BngK+oph71ckVcB9zwamAz8F6P/JsqYY2njEk+n6CxChgtIqNEZASpiu36jHnqgSvd8ARgkTvZ1wMTXeuqUcBoYGW2lYnIOOD/Ap9V1eOB8SPTlegi8m6X1haP/JsqY42njEmu4blmUNVuEbkWmAsMA6ap6gYRmQQ0qGo9MBV4SESaSFVuT3TLbhCRR4CNpIqarlHVHgAReRi4CDhDRHYCN6jqVOBO4BRgfqouneWupdQngEki0gX0At9R1QEV6cYYY8onZ9AAUNU5wJyMcdcHhtuByyOWnQxMDhl/RcT850aMfwx4zCe/xhhjyiOxFeHGGGOSx4KGMcYYbxY0jDFDQk+v0tNrbfSKZUHDJIa9R8OU05jrn+YTty6OOxtVz4KGSRzrsNCUQ0d3L7sOnYg7G1XPgoYxxhhvFjRMP5tbjqJWTmSMiWBBw/RZu+MQl/z8GaY9vy3WfFjMMia5LGiYPtsPHAPgxR2HYlm/1WUYk3wWNIwxxnizoGESw4qljEk+Cxomcaq9mOrhla+xNqYiPmPKzavDQmOMv+t+/xIA227+25hzYkzp2Z2G6WPFQwZgyuImaupm09XTG3dWTAJZ0DADVHvxkCnO3X/cDEB7V0/MOTFJZEHDGGOMNwsaxhhjvHkFDREZJyKNItIkInUh008RkVlu+goRqQlMu86NbxSRSwPjp4lIs4isz0jrbSIyX0Q2uf9vdeNFRO5waa0TkQ8XutEmmRSrVEkS2xsmTM6gISLDgCnAZcAY4AoRGZMx21XAQfeq1tuBW9yyY0i9L/w8YBxwl0sP4AE3LlMdsFBVRwML3Wfc+ke7v6uBu/020VQbwSpV4hTnt9+wrZXWY50x5sDk4nOnMRZoUtUtqtoJzATGZ8wzHpjuhh8FLhERceNnqmqHqm4Fmlx6qOqzQGvI+oJpTQc+Fxj/oKYsB94iImf6bKTxY1f6Jm4T7lnGl/5rWdzZMFn4BI2zgB2BzzvduNB5VLUbaANO91w209tVdY8b3gu8PY98ICJXi0iDiDS0tLTkWJUJSje5tet8E6em5qNxZ8FkkeiKcE310Z3X5a+q3quqtapaO3LkyDLlbHATa3NrsOd2TDifoLELOCfw+Ww3LnQeERkOnAYc8Fw20750sZP735xHPowxxUpfM1jQMCF8gsYqYLSIjBKREaQqtusz5qkHrnTDE4BF7i6hHpjoWleNIlWJvTLH+oJpXQk8ERj/ddeK6gKgLVCMZYwpEbvPNNnk7HtKVbtF5FpgLjAMmKaqG0RkEtCgqvXAVOAhEWkiVbk90S27QUQeATYC3cA1qtoDICIPAxcBZ4jITuAGVZ0K3Aw8IiJXAduBL7mszAE+Taoy/TjwzVJ8ASY5rDjEmOTz6rBQVeeQOmkHx10fGG4HLo9YdjIwOWT8FRHzHwAuCRmvwDU++TXVzapUjEmuRFeEm8oaqlf6v1m+nX2H2+PORuJYE2wTxoKGGSDuC/1yBK/unl56egcmvLetnX9/fD1XTV9V+pVWKWs9Z7KxoGESo5znqnN/+BSfvXPJgPHdvanuvw8e6yrfyqvUUL3zNNlZ0DBDxobdh+POQlWwGw2TjQUNkxh2ZZsstjtMGAsapk9SThJ2pRsv+/pNNhY0TB8dAp1PHevopvam+Sxt2t9vvNptjjFeLGiYAQZz1+Sv7D3C/qOd3DavEbCWQsbky4KGMSZU0u++bp//Ksu3HIg7G0OOBQ1jTD/Vcvf1y4WbmHjv8rizMeRY0DDGhEr2fYaJiwUNkxh2kkqG6rjPMHGxoGESpxInrcziegtYAyW8SsPExIKG6TMUzhGZxfV2VT1QlVRpDHm7Dp2gpm42q7e3VnS9FjQGqZf3HOZoR3dBy9pJw5jke949a/Twyh0VXa8FjUGop1e57JfP8Y/TG+LOijFmkLGgMQj1usLoVdsqe9tqBhd7n4YJY0HDnDSEzhGZm2qVvkGufNK+ExPCK2iIyDgRaRSRJhGpC5l+iojMctNXiEhNYNp1bnyjiFyaK00ReU5E1rq/3SLyuBt/kYi0BaZdjymLuKo0KvEEcua2Wf3NQPadmGxyviNcRIYBU4BPAjuBVSJSr6obA7NdBRxU1XNFZCJwC/BlERkDTATOA94BLBCR97plQtNU1QsD634MeCKwnudU9TOFbqzJLinFEdXyRLIxQ5HPncZYoElVt6hqJzATGJ8xz3hguht+FLhEUr/88cBMVe1Q1a1Ak0svZ5oicipwMfB4YZtmCg0BcZ+zk97n0VBhe8GE8QkaZwHBNl073bjQeVS1G2gDTs+yrE+anwMWqmrwdWsfE5EXReQpETkvLLMicrWINIhIQ0tLi8fmDT7Vep3uc4ehqvx8XiNbWo5WIEdDU7UeP6YyklwRfgXwcODzGuBdqvpB4FdE3IGo6r2qWquqtSNHjqxANk0lNR/p4FeLmvja1JXFJZRxN5OUojljijHm+qf57m9Wl3UdPkFjF3BO4PPZblzoPCIyHDgNOJBl2axpisgZpIqwZqfHqephVT3qhucAr3fzmSEkfa7v7u0taPnMu5nB/O6QUuntVR5cto2O7p64s2JyON7Zw1Pr95Z1HT5BYxUwWkRGicgIUhXb9Rnz1ANXuuEJwCJNFUzXAxNd66pRwGhgpUeaE4AnVbU9PUJE/szVkyAiY13erTP9LAZj3YDdEVTe42t3cf0TG/jVwqa4s2ISIGfrKVXtFpFrgbnAMGCaqm4QkUlAg6rWA1OBh0SkCWglFQRw8z0CbAS6gWtUtQcgLM3AaicCN2dkZQLwXRHpBk4AE3UwnhVLoNDWR3F/m/nsTrtDKJ/04ZPeHenuaNpOdMWUI5MkOYMG9BUHzckYd31guB24PGLZycBknzQD0y4KGXcncKdPfk1x4j4hZwt6cQe2MIsbm7lg1Om8ccSwuLNSEun9b3d1JkySK8KNiVRss+BSnQ437TvCN+9fxQ//8FKJUjQm2SxomD5D4boyKtYUegdzuD1VdLP1wLHCEjCmyljQGMSS+nDfgaMdfOGu59nb1p575jIr9bYOpmq2QbQppoQsaJiKe6RhJ2teO8T9S7fGnZU+zUc6SpLOY2syW6MnT3dPL3f9sYn2rvAmtHH3CGCSzYKGSQyfK9ukXvym875+V1u8GfEwq2EHtz7dyJTFg7cJbVPzEbYnsMiw5UgHYycv4NV9R+LOSsEsaAxiqvC+Hz1Fb6/fqTbqpN3Z3cu+w/EXJQUVezHsE6Be2tlGTd1slm7eH52PKrwqP9GZusM41pH9Yb2kBuhsjnd2U1M3m7/5xbP89W1/jDs7Ayx4eR/NRzqYtiQ5d9n5sqAxyLV39dKTZ+F05onw3x5bx0d/snBQPBGcz0k+HSz+2Di0+jBLf0XVWD+z+9CJuLMw6FnQMDnN25DqlqCrJ/6TSKlPZFV4o1B21jV9+eVzGCcteFvQMENKuX5/6WSr6Xyb5If3fItUM8V9ft3RepxfzH818kRfyOGx5rVDxWWqxCxomCEpn5N7tiu9KooRfarhTqK9SotC//HBBu5YuImt+0tXCR/Vyi0uFjTKZPrSbTzfFF2BWo2SdJtc7InPZ1Oq4NxaVgna3d7iznJnd69XPpJ8l5eLBY0yuaF+A1+5b0Xey+06dILHX4inrX/UgZykK9NiT2Rl25SEnGEXbNzHfz2z2WvehGQ5VJLzVowE/ZQK5tVhoamcCXcvZU9bO3/3wXcw7HVxHWFxd1gY6+rzkqSACvCtBxsA+PZfvydynkJzXM1Xx6Z07E4jYUrxPEShxUi5FqvUKaOiV5lFnvNf3nM490xVLllhMbtquUOplnyGsaBRZt09vfxsbiNH2vN7F0Gc9QeZF88+J41pS7ayo/V4fiuKYRMfXrkj90wZZqx4jZq62Rxz75UIuu73g69328z3aZjSifu1A6VgQaPM6l/czZ2Lm7j16Uav+ZNW3OHj4LFOJj25ka9O9avDiXMTH175GhBe1HK8s39QSP/Aj7snqPcfje6fajCdX5NwCA6m77NYCdgd/VjQKLOunlRrinyfpi7lj6bcB12vuyQ90j7wSrya3PzUK3FnoSKSEBTKpVz1Lm3Hu7j8nqXsPJjn3XSEag6KXkFDRMaJSKOINIlIXcj0U0Rklpu+QkRqAtOuc+MbReTSXGmKyAMislVE1rq/8914EZE73PzrROTDxWx4UiX595yzzqOC5RnlOPHl8zrTBRv3sSmk07mo4ocpi5u46cmNBeetknYdjL8rjiQ17wZ48qXdrNp2kCmL/VqmRUryD9xTztZTIjIMmAJ8EtgJrBKRelUN/gKuAg6q6rkiMhG4BfiyiIwh9b7v84B3AAtE5L1umWxp/quqPpqRlcuA0e7vo8Dd7v+gVMrfjG9SkfPlONCTXKS2buchPnvn85HT8yljDu6TdCslX7fNTRVP/vtnxuS1XBzSD2NXY2upuGNNevVx56OcfO40xgJNqrpFVTuBmcD4jHnGA9Pd8KPAJZI6k4wHZqpqh6puBZpcej5pZhoPPKgpy4G3iMiZHvlPhKiDaMWWA/16US3n+fe1A8epqZvNnJf2ZJ2v8CaZpZHtO8j3x5irs8FsJ8b8nhr3nzcpknQ1v6XlaL/PSb4QySb9JHiuZ2VKelFY4d3oEzTOAoJNTna6caHzqGo30AacnmXZXGlOdkVQt4vIKXnkI3FyXcl++d7l/P2vB1Ygl+Mqb8Pu1Lse6tfuLmm6cfy8q/Sckgi+X12lTkaLG5u5+OfP8MTakw+1Jimg9eeXr1XbWrnvuS1sy+hOZDActkmsCL8OeB/wV8DbgH/LZ2ERuVpEGkSkoaWl+rq0TnSTvJx1Gvkl9/jaXfTk2TFdrmC6buchPnDjXFqPdWZPp0znpMEYzMp9+n51b6puqBQvsCrbfs3xu+zpVW6be7IhxdGOHm6a/TJf+q9l5clQQKWPOZ+gsQs4J/D5bDcudB4RGQ6cBhzIsmxkmqq6xxVBdQD3kyrK8s0Hqnqvqtaqau3IkSM9Ni+Zynmh1dXTy01PbuSw57MjuY7JQg/afYc7+M3y7YUtHOGeZzZzuL2bZZsPlDRdX7n22/Sl2xJ8FZ1duS5owo6fpH1DuS5WljTt71dJnt7H6eba+abXTwFfe77PheXDJ2isAkaLyCgRGUGqYrs+Y5564Eo3PAFYpKlvrR6Y6FpXjSJVib0yW5rpegpXJ/I5YH1gHV93raguANpUNXvhvAm18JVm7luylV/Me7Wk6RZyMjyQ444g/zz4zzt1yVaamo/mntFnvZ4ngRvqN/DynmS86jN3p3rRdrQe52jIw47FqNJYCkBPb2+/z1GbUqm6mg//eH7Z0s7ZekpVu0XkWmAuMAyYpqobRGQS0KCq9cBU4CERaQJaSQUB3HyPABuBbuAaVe0BCEvTrXKGiIwkFV/XAt9x4+cAnyZVmX4c+GbRW19Bcf4eon6M6WdIcs6YnhzVoWEMRWqlWOePY2oCO+B7L9Lh9i5OGf46Thk+zGv+Upy4Lrx1MX951qk8+U8XFp1Wel8mOWbke7zFfTdZzhemeXVYqKpzSJ20g+OuDwy3A5dHLDsZmOyTpht/cUQ6Clzjk99Eyff3WYLz75YC+/KPepGQ70mm2MM0r7eZoTzw/Fa+9Ffn8CcjKtPvpk/24qjT+MCN8zj/nLfw+DX/02v+Up3Q1u+q7n63aupmc/lHzua2yz/ovUxvL9z05Ea+9rF38a7T35Rz/kFYxZXIivBBad/hdmrqZve9OrWcrpq+KnS87wkt86qq0ldNPk1ud7Se4Mb/3sjk2S/nnUYwnWxKVXRVSqpK85GBnVqu3ZH/293SX9Hxzu6sXaTEodBDLt9Wh79bvTOv+Tc1H+G+JVv59kOr+40f8JvJK9XqYkGjQtItQ2atyt5hXimuTHpLW/rRJ/IWPc9Ml/Lq61AeT3Hna2lGZXq2FlmljqsN21p5MSQQ/Hbla4ydvLCv+XQx0ln+7J3PU3vTgoHTMzaqXA/7VVMHiZkP733x7qW8/8a5A+ergm0plAWNIh3v7KbZozvzfI+hYg66ct0Z5DxpVOCHUqpVbPTo0vy1jF57v3j30pKs22cbJtyzjPFTBj7Jng5kW1oKf51oZ0adStQdVV9xZcFrys+iV/ZVaE3FS/8WVm8/yJH2bh5f278hZ99vMOrLy6vxVLIKuSxoFGnC3csY+5OFkdMzd3euY6UUZeKlPndnq9Po7umN9x3GGRtbTLws5qs/3N7l3YS5XL79kF/XJj+Zk3qeYMPuZNVJbDvQP0jvaD3uVWy2YXcbSzalelWI6wr/iYgHZjOPqUKOsaR152JBo0g+V6zQ/2Dp6ukNfTdDUGdPLzV1s/nPBcU3i/U96Ar5wf3zzBf4qAuaBR3aea50YBBWVm1r5fb5pfieCrej9QQfuHGe90nhRGcPuw+VtmPAuRvyu1I/XMaivXxEXZRceOvi0GKzTH97xxLvbvmL5f00fVlzES8LGhWSfshn58HjjP7hU5x3w1xWb28dMF/6VnSme+/Dfc9tzXtd0edhv0M+n7udOS+Vv2I/KHPTVOHye5bxy4WbKpqPYn1t6go+fvOigpcvxUkpM40v3NW/OKzUV+1tx7s4dHxgvVDo4Vbhs27b8S5q6mbzqGfFeM7vJoaS3Eo90GpBIw+PNOygpm52zi4qwnR0p8qRNwfKol94LbrFy0/dux3y7WYDync7e/VDq7M+YxBH2/SoVaZPRL8owR1IPny/gYbtB73mq6mbzUPuqflDxzuZva50z7Nm7q81WY7HUvjgpHmcP6l8D50VI11/9cDS8Iu0fIuNox/uOzm8p+0EDdsGXjgWasv+yrT2s6CRhxnux/vV+1bwuwa/14bm+yBV5uyFBIBSn7vTeVq5tZXNLfkdmFMWN1FTN5veAoJfmMwTXU+Cm6l09/Tyo8fXDyiGCm7D0s37+drUFVz/xPrMxfv8dkXqrvPxFwb0mlOU5H5zyZPeZa+1+hUppvdxtt//Rbf9kQn3lL9vqlKzoJGH9I9s457D/Ouj6wpLI3DCuCniGYP+80dPO3isk7bjA8ul4zoZhK03XddQrpP7/I2la3Hz1Prii9qCp4jlW1p5aPl2/u2x6GNlxorXeG7Tfh5cll8fXHE/cVxKua6rwp5LiRL2tZw/aR7/55EXsy/n+atJV8y353gTZ87SK9W+0odSqdQhYUEjD3H8TrOt8kM/ns8HJ80buEye+Tx0vJOfzW30KgoLpt2Zx0Ffqe+umKK5zu5er+bT+ealt8iNDzun/svMtQUVk/ajDOi6e8AMFRC2fcH9WOx2HjrexWNr8nuIL9OAEgDPHp8H9q7gv87V21tZt/OQNbkd6vL+GZbgd5vtAN+4+zDnT5rPnYubWPBy+FV71CH7qdufybmeSnarUVM3u+g0xv5kIbsPneBACZ6Q9ulmI5+vJ7OoY/mW4io+FbjoZ3+Mnp6xP1/dd5TuPPvNenXfkbxeo1usQi8aSn1iTuejmFS/ePeyrG+dzFSp35oFjTxUor10WJPS/PkvszAQKLp78jvQM9vVZ8+RBoaT7eM3L+IjHk09c7nl6VRjhqxFjCGtiTIl5R0dK7e2ctu8xryW+dTtzzIhx0ORYc3WK31Xnz4+9x/xu6vJlb/2ruzBtRybZ8VTCdB8JNVf1NPrUy1WCtkpxf7eC1mn7zLLthwgWCLVd3WU5SyVb376ejD1WM4nQPquPq4Tbei7ITIfQAwMP9+U+25BJFUGfkP9hv7jIbQJazbBIsVC6kWytfiLsilHH16PNPgVHe06dIJv3L8y5zNOudTUzY7s1n1vCYsnAY519HD5PUv7XmdbyB1N0voFs6CRRfq9BzNc65VSRPKoNNJPVWeesMt5n7Gl5Ri/XVm6lyCFnvRDfiPBUWF5zfbDSnr9b64rzEKFVTeJkHcT1smzT3YHX9CjBjF+/z+b28gfG1uYm6XTz8zj47rfvxQ6376M4FCurs87e3pZte0gP8vzDi3onx5+IUdeCk66IBY08lDOfdNyJPxqopBK1KhlvvOb1QPG7Tuc+yomGMji79Ig7vVnF1bPkPmd5d9bftQS+V+1rt15sqNDn0Or+XB7aMAqt1Kt8mH3kGymTfv6vwgr3+O62PwFv3tVZbXncztJYEEji0qWcET1bxY8uJqaj1JTNzu099OoZSoptCI8j+Uf83gaN+l3GrmKYgoV9j2Wu7/wgD4AABFMSURBVAju6fV7GfuThf2KxeK/aCjNMfCd36yJJQ9h+2zGitf44t1LC24+nsR3hBunkDJg3x16oqsnZ8d/i19pBqD+xfDO0ZIs11d3pL2LOxY1Aamnc9OtdHp6tV+QjP+Ulb9iT3JRx1CuQ2vr/mP8csEmVJXeXuV7M1ZnfJfZM7bmtYFXv/lsSzG91gZ/a+t3HWZLy1H+4B5ufL5pf8keFvWV+V33qpbsWZl0L8M7Wv0blsTJgoYHn2Mjqr179nbwJ136n8/ygRvnhZ4JenuVe5/d3Fd5l7uNeGEHs1dldZZ5QusnPINm5jtAVmxNda/wy4WbGD/l+Zx3Vz75K4VnXm3Je5nM4sJ8sxhZOJXjy/3qfSu4fcGr7D/ayZH27gH9hPk+a1CoJZuiK/l3HTrh3SXKD373Ihf//GTz7t+/sItHPHtkKJU/ZDyN33ykg+uf2BAx90ADvvuQearlgsgraIjIOBFpFJEmEakLmX6KiMxy01eISE1g2nVufKOIXJorTRGZ4cavF5FpIvJ6N/4iEWkTkbXu73rKLJ8Her5x/8rQ8emrZx+dPb2hR86iV5r5yZxX+jrly3WFeLi9uNYlkHpPyNjJC1jatL8kxXSFFmtsdC8byqy4jMuiiGdZslm1rf8V+4nOynQl35HjqeVClOrE9rkpz3PNb6OLiHKtZ8fB8KvyUuTv6gcb+rpuSUtfxASl+wQr1smXUCkHj3Xm/SxMpeUMGiIyDJgCXAaMAa4QkTEZs10FHFTVc4HbgVvcsmOAicB5wDjgLhEZliPNGcD7gPcDbwS+FVjPc6p6vvubVMgGFyJ9wst24ivVi9zDuts4kVFsVYly/ca9R2g+0sHf31dYl9O1N83nwWXb/JvcRkSmk0/W+jfdhf4dQ5ZSKb76GSvyPNlE3FHkCub9vqsYmiBnuxGKavgRl+B3NW/jPv7fH8JbXRXjqZf2cDDk6fb0b6Szp5cP/Xg+P8rSD1mUhm2tNFfoO/W50xgLNKnqFlXtBGYC4zPmGQ9Md8OPApdI6lc+Hpipqh2quhVoculFpqmqc9QBVgJnF7eJhRv4ruxKrHOgYlc7Y8VrJS8DznU1tP9oZ16371HSuZa+z9m3I93lxG1zC2/imDU/MZQhHG3vGvAWQcjjne8FBoywVnilKMe/55nNOef52E+jX2yWykfR2eizo/U4S5r2Dxgf9uqCYnx3xhpu/O9Uk+ejIS/saj2aOnaffDH/nown3LOMOyr0eoDhHvOcBQQLEHcCH42aR1W7RaQNON2NX56x7FluOGuarljqa8C/BEZ/TEReBHYDP1DVAWclEbkauBrgne98p8fm5eZX1l+aozisnLrYtH/85EbOePOIotJIS9/1fOZXSwZO9MxmIVvj+x7pnQdL+2KjMGFXi6XQdryL0/7k9QPGb245FtrdRz71Kz4PHWYqpFv+oKlLtoaOv9l1+5/KQ/g6Crlzr6mbzV+edWrey/31bYtDmxV/8e5lbLv5b/NOz8fixpP7Lr1v7nPfV75bvqet/Md8UJIrwu8CnlXV59znNcC7VPWDwK+Ax8MWUtV7VbVWVWtHjhxZVAYGdlOeDA8s3Zb3exWinoD1cSBwkrzcdeX8yt4jUbP3k/kdbtx9uN9Jo72rJ+tdUOZJJdeJrhLND5/O8nBZMbKV8YfJ1TNusaVTS4t4qU+5622iDhmf/r580wLY21b+urR8rwnT7/VJPyne1V3ZM5NP0NgFnBP4fLYbFzqPiAwHTgMOZFk2a5oicgMwEvh+epyqHlbVo254DvB6ETnDI/9FS+/UbFf8pdptYSf3lSGVcD/43cmuntPvUj7eWVwFeF9RUIEn3mxFR+kpqzOacf76ua38x38PLMZKv4o0M09xPyfw5LrdZXsQK6pyt1i+Lfh87D/q2TdTxn76akTd2A7P91Nk8iniKoULchSTlcK058PvyMI0NR9h1qpUIc32/fE00fUJGquA0SIySkRGkKrYrs+Ypx640g1PABa5Ool6YKJrXTUKGE2qniIyTRH5FnApcIWq9hWci8ifuXoSRGSsy3vZ3m/4sZ8u5CsZB3pcp6uwQBKsHH9l7xFqb1rAZ+4IKTLKQzoo7j50ImvPpM9tii4Wae/q6Re8jntccc5ctWNAoEpXRJ586NHzVbVecxXu4PEu71eC5mt7Hh1AArwux8am63cm3LOsZMWeuzzfa565v8LqDAA+cdvivPMwlP3NL54dcNFS6QupnHUaro7iWmAuMAyYpqobRGQS0KCq9cBU4CERaQJaSQUB3HyPABuBbuAaVe0BCEvTrfIeYDuwzB3ov3ctpSYA3xWRbuAEMFHL+CaaPYHb0r4TaIKetA66312pbCnRFeXcDfuYuyG6aenXpoY3L+7qUd73o6dDp+XaVfcv2dbvc98zKe7zvsPtXpX5uytQnFCsUnXD/ToR725mXg7rSbaAdQ6mlz9Vu7juun0qwtPFQXMyxl0fGG4HLo9YdjIw2SdNNz40T6p6J3CnT35LLazrZqDfK1/3tLWzt62dPzvtDSVf/5GQlhZBr/MoTypX5a0vBe5YuCn0nd0d3b3cviD8Xd7pk1Td71+i+UgHF7/vf5Qzm1Ultd/DTxwX3rqo3+fLS/RaUQsZyZHuHbiS7yuBZFeEJ07mDybzla9PrtvNsiIqD6MEW1qECcaMb01fFTrPz+aFn5SDim0tk0tYwIjS06sDguWSTeFFHFGiejiNW8muELNcK/jUFYTdNOSq+FXN3tx6/sZ9PPNqC39xffgdpym9V/eVp7+zKF53GiYl1615+p3f5WqmFyVY57Hg5eaC0yn1O4uD8i3V6FV4/439X2V7tKM7vKlvhKgeTgeLXHUauYQFr7D+pjJ9b0Z0K69/fLChqDyZ5LM7jRBRwSGpt+aFvBgnTK6+jIpRbMsuiC4mHGx86w3K8e5on4YL8wrsjdX4KaZ5fFC5nt+woBFic0v47V6+rVuqzSt7y3dS/thPF+WeaYjI7Lwu04wVfndIRd9phMSmYFNuk1Kqk3illeuFYBY0QnQXWbZfUze7RDmpLGsYE78TnT1MdsWcufg0gMimVK8Rvea3a5jzUv5dX1SLK6eFtxZMumIvKiLTLU+y1a0ct/3G+LixfsOADiqjHCnyCrhU7R5mr9vD92asYV6ZnpSPWxxv1SvFhWe5GrZY0AgRdgF356LKdAZmhraV20rbSV4lXf3QwNcJm/iUq/WgBQ1PPk1WjSnW1hJ2+WGGtrB3gJSCBY0QVjhljJ9jVVpJbApnQSNEpV/Ubky1muTeD2GGDgsaxpiCzarwu7pN/CxoGGOM8WZBI5SVTxljTBgLGiH2HU5+99rGGBMHCxoh1u4oTV9Oxhgz2FjQCOHzsh9jjBmKLGiEsJhhjDHhLGiE6LGe+4wxJpRX0BCRcSLSKCJNIlIXMv0UEZnlpq8QkZrAtOvc+EYRuTRXmiIyyqXR5NIckWsdpdaV5c1kxhgzlOUMGiIyDJgCXAaMAa4QkTEZs10FHFTVc4HbgVvcsmOAicB5wDjgLhEZliPNW4DbXVoHXdqR6yiHEx4vojHGmKHI505jLNCkqltUtROYCYzPmGc8MN0NPwpcIqnXwI0HZqpqh6puBZpceqFpumUudmng0vxcjnWU3AfPOa0cyRpjTNXzCRpnAcG+Ana6caHzqGo30AacnmXZqPGnA4dcGpnrilpHPyJytYg0iEhDS0uLx+YN9PkPnc0nx7y9oGWzeffIN5U0vT9/+5+WNL2h6qdfeD8ff8/pvP3UU/jni8/lnLe9saj0vvLRd+ac5y/OPLVv+MzT3lDU+irh4+8Z8FMzWZTrBUj5uOHvMguESmN4WVKNkareC9wLUFtbW3CN9q+/XluyPJnku2LsyRP99z/150WnN/nz7y86DWOSyOdOYxdwTuDz2W5c6DwiMhw4DTiQZdmo8QeAt7g0MtcVtQ5jjDEV4hM0VgGjXaumEaQqtusz5qkHrnTDE4BFqqpu/ETX8mkUMBpYGZWmW2axSwOX5hM51mGMMaZCchZPqWq3iFwLzAWGAdNUdYOITAIaVLUemAo8JCJNQCupIICb7xFgI9ANXKOqPQBhabpV/hswU0RuAl5waRO1DmOMMZUjg/livba2VhsaGuLOhjHGVBURWa2qoRW79kS4McYYbxY0jDHGeLOgYYwxxpsFDWOMMd4GdUW4iLQA24tI4gxgf4myE6fBsh1g25JUg2VbBst2QHHb8i5VHRk2YVAHjWKJSENUC4JqMli2A2xbkmqwbMtg2Q4o37ZY8ZQxxhhvFjSMMcZ4s6CR3b1xZ6BEBst2gG1LUg2WbRks2wFl2har0zDGGOPN7jSMMcZ4s6BhjDHGmwWNECIyTkQaRaRJROrizk8UEdkmIi+JyFoRaXDj3iYi80Vkk/v/VjdeROQOt03rROTDgXSudPNvEpEro9ZX4rxPE5FmEVkfGFeyvIvIR9x30+SWLcu71CK240YR2eX2y1oR+XRg2nUuT40icmlgfOgx514fsMKNn+VeJVAWInKOiCwWkY0iskFE/sWNr6r9kmU7qm6/iMgbRGSliLzotuU/sq1fUq+hmOXGrxCRmkK3MZKq2l/gj1RX7ZuBdwMjgBeBMXHnKyKv24AzMsbdCtS54TrgFjf8aeApQIALgBVu/NuALe7/W93wWyuQ908AHwbWlyPvpN7bcoFb5ingsgpux43AD0LmHeOOp1OAUe44G5btmAMeASa64XuA75Zxn5wJfNgN/ynwqstzVe2XLNtRdfvFfU9vdsOvB1a47y90/cD3gHvc8ERgVqHbGPVndxoDjQWaVHWLqnYCM4HxMecpH+OB6W54OvC5wPgHNWU5qTcknglcCsxX1VZVPQjMB8aVO5Oq+iyp96KUPO9u2qmqulxTv5gHA2lVYjuijAdmqmqHqm4Fmkgdb6HHnLsKvxh41C0f/E5KTlX3qOoaN3wEeBk4iyrbL1m2I0pi94v7bo+6j693f5pl/cF99ShwictvXtuYLU8WNAY6C9gR+LyT7AdcnBSYJyKrReRqN+7tqrrHDe8F3u6Go7YrSdtbqryf5YYzx1fSta7IZlq6OIf8t+N04JCqdmeMLztXrPEhUle2VbtfMrYDqnC/iMgwEVkLNJMKwJuzrL8vz256m8tvyX7/FjSq2/9S1Q8DlwHXiMgnghPd1VxVtqmu5rwDdwPvAc4H9gA/jzc7+RGRNwOPAf9bVQ8Hp1XTfgnZjqrcL6rao6rnA2eTujN4X5z5saAx0C7gnMDns924xFHVXe5/M/AHUgfUPlcMgPvf7GaP2q4kbW+p8r7LDWeOrwhV3ed+6L3Ar0ntF8h/Ow6QKvIZnjG+bETk9aROtDNU9fdudNXtl7DtqOb9AqCqh4DFwMeyrL8vz276aS6/Jfv9W9AYaBUw2rVOGEGqMqk+5jwNICJvEpE/TQ8DnwLWk8prurXKlcATbrge+Lpr8XIB0OaKHOYCnxKRt7rb9U+5cXEoSd7dtMMicoErz/16IK2yS59gnc+T2i/p7ZjoWriMAkaTqhgOPebcVf1iYIJbPvidlCPfAkwFXlbVXwQmVdV+idqOatwvIjJSRN7iht8IfJJUHU3U+oP7agKwyOU3r23MmqlS1/YPhj9SrUJeJVV2+MO48xORx3eTaunwIrAhnU9S5ZcLgU3AAuBterIVxhS3TS8BtYG0/oFUxVgT8M0K5f9hUkUEXaTKUa8qZd6BWlInhc3AnbjeDyq0HQ+5fK5zP8AzA/P/0OWpkUDLoahjzu3nlW77fgecUsZ98r9IFT2tA9a6v09X237Jsh1Vt1+ADwAvuDyvB67Ptn7gDe5zk5v+7kK3MerPuhExxhjjzYqnjDHGeLOgYYwxxpsFDWOMMd4saBhjjPFmQcMYY4w3CxrGGGO8WdAwxhjj7f8DvrE5OvFSm/sAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#plt.plot()\n",
    "plt.plot(w_opt)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. Structural interpretation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "main_dir = '/media/argha/Argha_HDD/HiWi_Prof_strodel/jupyter_work/Suman_5_08/deshaw_ss/DEshaw-ab40/'\n",
    "force_name = 'a99SB-UCB'\n",
    "\n",
    "force_dir = main_dir + force_name + '/pnas2018b-Ab40-'+ force_name +'-protein'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "traj = md.load(force_dir + '/traj_concatenated.dcd',top= force_dir + '/ab40-desres.pdb')\n",
    "ref = md.load(force_dir + '/ab40-desres.pdb')\n",
    "\n",
    "rmsds = md.rmsd(traj,ref)\n",
    "plt.hist(rmsds,bins=100,alpha=0.6,density=True,label=\"MD\")\n",
    "plt.hist(rmsds,bins=100,alpha=0.6,weights= w_opt[1:],density=True,label=\"MD reweighted\")\n",
    "plt.legend()\n",
    "plt.xlabel(\"RMSD from A-form (nm)\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYIAAAEGCAYAAABo25JHAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAfEklEQVR4nO3de5QU9Zn/8fcjohhBTcBE1oHMmBANCBEcwNsQjKIGFQ1oBF1dNEo08edlV1zd/BQlm6OJxhxBVwLeb+AFVwniEeNCUIzIcPECmMAq6rj+As4qiohKeH5/VM1YM0z31Mx09a0+r3Pm0FX17epnapp++nup79fcHRERSa+dCh2AiIgUlhKBiEjKKRGIiKScEoGISMopEYiIpNzOhQ6grXr06OGVlZWFDkPy5NP61QDs1r1vgSMRKW3Lli173933bulYySWCyspKamtrCx2G5MmqewcB0O8s/c1FOsLM3sp0TE1DIiIpp0QgIpJySgQiIilXcn0EIpK8L774grq6OrZu3VroUKSNunTpQkVFBZ07d479HCUCEdlBXV0d3bp1o7KyEjMrdDgSk7tTX19PXV0dVVVVsZ+npiER2cHWrVvp3r27kkCJMTO6d+/e5pqcEoGItEhJoDS15++mRCAiknLqIxCRVl352Ks5Pd91o/u3WsbMOOOMM7j//vsB2LZtGz179mTo0KHMnTuXu+++m4kTJ1JRUcHmzZvZb7/9mDRpEocddlhOY00DJYI0+cPFXz4+8ebCxSESw+67785rr73Gp59+ym677cYzzzzDvvvu26TMaaedxi233ALAggULGD16NAsWLOC73/1uIUIuWWoaEpGiNXLkSJ588kkAZs6cybhx4zKWPfLII5kwYQLTp0/PV3hlQ4lARIrW2LFjmTVrFlu3buWVV15h6NChWcsPGjSI119/PU/RlQ8lAhEpWgMGDGD9+vXMnDmTkSNHtlpea7C3j/oIRKSojRo1issuu4yFCxdSX1+fteyKFSvUP9AOSgTlSJ3CUkbOOecc9tprL/r378/ChQszlvvTn/7E9OnTWbBgQf6CKxNKBCLSqjjDPZNSUVHBRRdd1OKxhx56iOeff54tW7ZQVVXF7NmzVSNoByUCESlKmzdv3mHf8OHDGT58OADjx49n/Pjx+Q2qTKmzWEQk5ZQIRERSTolARCTllAhERFJOncUSj4akipQt1QhERFJONQIRaV20RpgLMWqVpTYN9WGHHcYLL7yQtUxlZSW1tbX06NGjyf6FCxeyyy67tDn2TOdrK9UIRKQoRaehBjJOQ71ixQrWrl3LFVdcwejRo1mzZk3W827bti2ReFtLAtksXLiwQ8/vKCWCFFny5v82/oiUglxNQz1+/HjOP/98hg4dyuWXX84nn3zCOeecw5AhQxg4cCBPPPEEAMcffzyvvPIKAAMHDmTy5MkAXH311cyYMQOAG264gcGDBzNgwAAmTZrU+Bpdu3YFYPv27fzsZz/jgAMOYMSIEYwcOZJHH320sdzUqVMZNGgQ/fv35/XXX2f9+vVMmzaN3/3udxx00EE899xzbNy4kTFjxjB48GAGDx7M4sWLAaivr+eYY46hX79+nHvuuTmbZE+JQESKVi6noa6rq+OFF17gpptu4le/+hU/+MEPeOmll1iwYAETJ07kk08+oaamhueee45Nmzax8847N34AP/fccwwbNoz58+ezdu1aXnrpJVauXMmyZctYtGhRk9d57LHHWL9+PatXr+a+++7jz3/+c5PjPXr0YPny5VxwwQXceOONVFZWcv7553PppZeycuVKampquPjii7n00ktZunQps2fP5txzzwXg2muv5YgjjmDVqlX86Ec/4u23327vpW1CfQSSWxpdJDmUy2moTz31VDp16gTA/PnzmTNnDjfeeCMAW7du5e2336ampoYpU6ZQVVXF8ccfzzPPPMOWLVt488032X///ZkxYwbz589n4MCBQDANxtq1axk2bFjj6zz//POceuqp7LTTTuyzzz4ceeSRTeIYPXo0AAcffDCPPfZYi7H+8Y9/ZPXq1Y3bH330EZs3b2bRokWNzzn++OP56le/2uo1iSOxRGBmdwInABvc/cAWjhtwMzAS2AKMd/flScUjHRNtTsr+nUwkt3I1DfXuu+/e+NjdmT17Nvvvv3+TMp9//jm1tbXst99+jBgxgvfff58ZM2Zw8MEHNz7vyiuv5Kc//Wm7f59dd90VgE6dOmXsr9i+fTsvvvgiXbp0affrtEWSTUN3A8dlOf5DoE/4MwG4LcFYRKREnXPOOUyaNIn+/bPPgNowDfV5553X6jmPPfZYpk6d2liDWLFiBQC77LILvXr14pFHHuHQQw+lpqaGG2+8sfEb/7HHHsud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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# compute radius of gyration\n",
    "rg = md.compute_rg(traj)\n",
    "\n",
    "# make histogram of original simulation\n",
    "plt.hist(rg,bins=100,alpha=0.6,density=True,label=\"MD\")\n",
    "# draw vertical line indicating the average\n",
    "plt.axvline(np.average(rg))\n",
    "# do the same with the new weights\n",
    "plt.hist(rg,bins=100,alpha=0.6,weights=w_opt[1:],density=True,label=\"MD reweighted\")\n",
    "plt.axvline(np.average(rg,weights=w_opt[1:]),c='orange')\n",
    "# legend and labels\n",
    "plt.legend()\n",
    "plt.xlabel(\"radius of gyration (nm)\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "traj = md.load(force_dir + '/traj_concatenated.dcd',top= force_dir + '/ab40-desres.pdb')\n",
    "ref = md.load(force_dir + '/ab40-desres.pdb')\n",
    "\n",
    "rmsds = md.rmsd(traj,ref)\n",
    "bb = np.histogram(rmsds,bins=100,density=True)\n",
    "cc = np.array(bb)[0]/sum(np.array(bb)[0])\n",
    "\n",
    "bb1 = np.histogram(rmsds,bins=100,weights= w_opt[1:],density=True,)\n",
    "cc1 = np.array(bb1)[0]/sum(np.array(bb1)[0])\n",
    "\n",
    "plt.plot(np.array(bb)[1][0:-1],cc,linestyle='-',color = 'blue',linewidth = 2,label=\"MD\")\n",
    "plt.plot(np.array(bb1)[1][0:-1],cc1,linestyle='-',color = 'red',linewidth = 2, label=\"MD reweighted\")\n",
    "\n",
    "plt.legend()\n",
    "plt.xlabel(\"RMSD (nm)\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# compute radius of gyration\n",
    "rg = md.compute_rg(traj)\n",
    "\n",
    "# make histogram of original simulation\n",
    "bb = np.histogram(rg,bins=100,density=True)\n",
    "cc = np.array(bb)[0]/sum(np.array(bb)[0])\n",
    "\n",
    "plt.plot(np.array(bb)[1][0:-1],cc,linestyle='-',color = 'blue',linewidth = 2,label=\"MD\")\n",
    "# draw vertical line indicating the average\n",
    "plt.axvline(np.average(rg), c='blue')\n",
    "\n",
    "# do the same with the new weights\n",
    "bb1 = np.histogram(rg,bins=100,weights=w_opt[1:],density=True)\n",
    "cc1 = np.array(bb1)[0]/sum(np.array(bb1)[0])\n",
    "\n",
    "plt.plot(np.array(bb1)[1][0:-1],cc1,linestyle='-',color = 'red',linewidth = 2, label=\"MD reweighted\")\n",
    "plt.axvline(np.average(rg,weights=w_opt[1:]),c='orange')\n",
    "# legend and labels\n",
    "plt.legend()\n",
    "plt.xlabel(\"radius of gyration (nm)\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Reweighted MD (𝜃=10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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qMePH09qaippaWnceeedLFu2jPnz5zNu3DjS09NDQ1EHBe+k7d69O3fddVexwzsPGTKEdevWAdCpUycmTpwIwIQJE0LX50cb3hqO14wKCwu55ZZbaNOmDQMGDOCSSy5h7ty5oXJTpkyhc+fOdOjQgU2bNrF161amTZvGX/7yF9LT01myZAn5+flceeWVdO3ala5du/L+++8DsHv3bgYOHBgactr5PPCvVH2JUyMAr1YQfMLVgQNQzEiWCe2OOyDKwGYnLT0dHit+wKGDBw+GRrgEb/ydrKysE8pde+21zJgxg549ezJ+/Pgi69asWcPq1aupU6cOrVu35le/+hX16tULDUVdv359/vjHP/Loo49y66238tprr7Fp0ybMjD179tCoUSOysrIYOnQow4YNixrn9u3bWbZsGUlJSfz2t7+lf//+zJo1iz179tCtWzcuvvhiMjMzWbJkCc2bN6dmzZqhE/CSJUuYNm1akeGtnXNkZWWxePHi0NhAAK+++ipbt24lNzeXb775hrZt23LdddeF1p955pmsWrWKJ598ksmTJ/PMM89w880306BBg9CInqNHj+bXv/41vXv3Ztu2bQwaNIiNGzfy4IMP0rt3byZMmMAbb7zBzJkzY/gHlFNZYieCwHg2EmbNGnivksehBurVq1dkZM3Zs2ef8ECXPXv2sHfv3tBQ0qNHj+b1118Prb/oootCY9ekpqby+eefs2fPnqhDUZ9++unUrVuX66+/nqFDh4aGTC7N8OHDQ0NkFze8c2ZmJk888QQpKSkMGTKERYsWceDAAT777DNat27NjBkzog5vHZ4Ili5dyvDhw6lRowZnn302F154YZE4rrjiCsAb4jn4EJ9Ib731VpH+ju+//559+/axePHi0HuGDBlSZMhpSUyJlwiC1GEcXbpP41D7td0wkcMlFxQUlDgU9fLly3n77beZO3cuf/3rX3nnnXdK3Uf40NWumOGdjxw5Qk5ODi1btmTAgAHs2rWLGTNm0KVLl9D7og1vXRbBz1rSEM+FhYX8+9//Dj1fQaQ4SgRSVAnNN/HWqFEjGjZsyIcffkj37t1jGsa4R48e3HrrreTl5fHjH/+Y/fv3s2PHDs4991wOHDjAJZdcQq9evUIPtSnL0MrB4Z2nTJmCmbF69Wo6depE7dq1adasGXPmzGHChAnk5+dz5513hppsBg0a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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "bb = np.histogram(w_opt,bins=50,density=True)\n",
    "cc = np.array(bb)[0]/sum(np.array(bb)[0])\n",
    "\n",
    "plt.plot(np.array(bb)[1][0:-1],cc,linestyle='-',color = 'red',linewidth = 3)\n",
    "plt.xlabel(\"$w_{opt}$\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "\n",
    "plt.axvline(1/len(w_opt), c = 'blue',linewidth = 2.5,label=\"MD uniform weight\" )\n",
    "plt.axvline(np.percentile(w_opt,99),c='magenta',linewidth = 2.5, label=\"99 percentile reweighting\" )\n",
    "plt.axvline(np.max(w_opt),c='red',linewidth = 2.5, label=\"Highest reweighted \" )\n",
    "\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZEAAAEJCAYAAABVFBp5AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU5fn38c/FTgENIFUUhGARCCSEsIWyCCgBAaEqKIIVFaEotLa/nyi0Ki3VR/uDWoUqCsITbRGUTXlcfoJLZFMx7AoooBFZVMQiS5D1fv6Yk3ESsgyHzExCvu/Xa16Zuc8597nmMMw159znXMecc4iIiPhRLtYBiIhI6aUkIiIivimJiIiIb0oiIiLim5KIiIj4piQiIiK+VYh1ANF2wQUXuIYNGxZLX59+CocOQfXq0KRJsXR5dj4FDgHVgZIQj4iUDMXwZbV69ervnHN18raXuSTSsGFDMjMzi6Wvrl3hvfegdWvIyCiWLs9OV+A9oDWQEdNIRKQkKYYvKzP7Mr92Hc4SERHflERERMQ3JREREfFNSURERHxTEhEREd+URERExDclERER8U1JREREfCtzFxuejYZjX8v1+uvPU4HasQlGRKQE0J6IiIj4piQiIiK+KYmIiIhvSiIiIuKbkoiIiPimJCIiIr4piYiIiG9KIiIi4puSiIiI+KYkIiIivimJiIiIb0oiIiLim5KIiIj4piQiIiK+KYmIiIhvSiIiIuKbkoiIiPimJCIiIr4piYiIiG8RSyJmVt/M3jWzTWb2iZnd7bXXMrMlZrbV+1vTazczm2xm28xsg5mlhPQ11Jt/q5kNDWlvbWYbvWUmm5lF6v2IiMjpIrkncgL4b+dcApAKjDKzBGAs8LZzrjHwtvca4GqgsfcYAUyFQNIBxgPtgXbA+JzE480zPGS5XhF8PyIikkfEkohzbo9zbo33/CCwGbgE6A885832HPAr73l/4HkX8AEQZ2Z1gZ7AEufc9865/wBLgF7etPOccx845xzwfEhfIiISBVEZEzGzhkAr4EPgQufcHm/S18CF3vNLgK9CFtvptRXWvjOfdhERiZKIJxEzqw7MB37vnDsQOs3bg3BRiGGEmWWaWebevXsjvToRkTIjoknEzCoSSCCznHMLvOZvvENReH+/9dp3AfVDFq/ntRXWXi+f9tM456Y559o459rUqVPn7N6UiIgERfLsLANmAJudc4+FTFoE5JxhNRR4JaT9Fu8srVTgB++w15tAmpnV9AbU04A3vWkHzCzVW9ctIX2JiEgUVIhg3x2BXwMbzWyd1/ZH4FHgJTMbBnwJ3OBNex3oDWwDsoHbAJxz35vZX4GPvPkmOOe+957fBaQDVYE3vIeIiERJxJKIc245UNB1G1fmM78DRhXQ10xgZj7tmUCLswhTRETOgq5YFxER35RERETENyURERHxTUlERER8UxIRERHflERERMQ3JREREfFNSURERHxTEhEREd+URERExDclERER8U1JREREfFMSERER35RERETENyURERHxTUlERER8UxIRERHflERERMQ3JREREfFNSURERHxTEhEREd+URERExDclERER8U1JREREfFMSERER35RERETENyURERHxTUlERER8UxIRERHflERERMQ3JREREfFNSURERHxTEhEREd+URERExDclERER8U1JREREfFMSERER3yKWRMxsppl9a2Yfh7T92cx2mdk679E7ZNo4M9tmZp+aWc+Q9l5e2zYzGxvSHm9mH3rtL5pZpUi9FxERyV8k90TSgV75tP/DOZfsPV4HMLMEYBDQ3FvmKTMrb2blgSeBq4EE4CZvXoC/eX39AvgPMCyC70VERPIRsSTinFsKfB/m7P2BOc65o865L4BtQDvvsc0597lz7hgwB+hvZgZ0B+Z5yz8H/KpY34CIiBSpyCRiZqvNbJSZ1SymdY42sw3e4a6cPi8BvgqZZ6fXVlB7bWC/c+5EnnYREYmicPZEbgQuBj4yszlm1tPbE/BjKnAZkAzsAf7us58zYmYjzCzTzDL37t0bjVWKiJQJRSYR59w259yfgMuBF4CZwJdm9hczq3UmK3POfeOcO+mcOwVMJ3C4CmAXUD9k1npeW0Ht+4A4M6uQp72g9U5zzrVxzrWpU6fOmYQsIiKFCGtMxMySCOw1TATmAwOBA8A7Z7IyM6sb8vJaIOfMrUXAIDOrbGbxQGNgFfAR0Ng7E6sSgcH3Rc45B7wLDPCWHwq8ciaxiIjI2atQ1AxmthrYD8wAxjrnjnqTPjSzjoUsNxvoClxgZjuB8UBXM0sGHJAF/AbAOfeJmb0EbAJOAKOccye9fkYDbwLlgZnOuU+8VdwHzDGzh4C1XnwiIhJFRSYRYKBz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mAqBpAOMB9oD7YDxOYlHyh4z4+abbw6+PnHiBHXq1KFv374ApKenU6dOHVq1akXjxo3p2bMnK1euLLb133HHHWzatAmAuXPn0qxZM7p161Zs/Ren3bt3M2DAgCLnq169er7tL7/8cvC9ipSkw1n9gee8588Bvwppf94FfADEmVldoCewxDn3vXPuP8ASoFe0g5aSoVq1anz88cccOXIEgCVLlnDJJZfkmufGG29k7dq1bN26lbFjx3LdddexefPmYln/s88+S0JCAgAzZsxg+vTpvPvuu2Ete+LEiWKJIVwXX3wx8+bN8728koiEilUSccBiM1ttZiO8tgudc3u8518DF3rPLwG+Cll2p9dWUPtpzGyEmWWaWebevXuL6z1ICdO7d29ee+01AGbPns1NN91U4LzdunVjxIgRTJs27bRpt956a64v2Zxf5BkZGXTt2pUBAwbQtGlThgwZgnMOgK5du5KZmcmECRNYvnw5w4YNY8yYMfz444/cdtttJCYm0qpVq2BiSU9Pp1+/fnTv3p0rr7ySjIwMrrjiCvr370+jRo0YO3Yss2bNol27diQmJrJ9+/bT4kxMTGT//v0456hduzbPP/88ALfccgtLlizh5MmTjBkzhrZt25KUlMQzzzwDQFZWFi1atAAgOzubG264gYSEBK699lrat29PZmZmcB1/+tOfaNmyJampqXzzzTesXLmSRYsWMWbMGJKTk/ONS8qWWJ3i28k5t8vMfg4sMbMtoROdc87MXHGtzDk3DZgG0KZNm2LrV073+9/DunXF329yMjz+eOHzDBo0iAkTJtC3b182bNjA7bffzrJlywqcPyUlJfjFGq61a9fyySefcPHFF9OxY0dWrFhBp06dgtMffPBB3nnnHSZNmkSbNm34+9//jpmxceNGtmzZQlpaGp999hkAa9asYcOGDdSqVYuMjAzWr1/P5s2bqVWrFo0aNeKOO+5g1apVPPHEE0yZMoXH82yAnPU3aNCARo0asWzZMm655Rbef/99pk6dyowZMzj//PP56KOPOHr0KB07diQtLS3XwPNTTz1FzZo12bRpEx9//DHJycnBaYcPHyY1NZWHH36Ye++9l+nTp3P//ffTr18/+vbtG9YhMTn3xSSJOOd2eX+/NbOFBMY0vjGzus65Pd7hqm+92XcB9UMWr+e17QK65mnPiHDoUoR16+C9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1VdfjXUopdbRo0cpX748FSpU4P333+fOO+/M99DZ2crOzqZq1aqYGXPmzGH27NnBZBiqtH8mi51KwYtISbZjxw5uuOEGTp06RaVKlYJnUxW31atXM3r0aJxzxMXFMXOm7kkXa0oiUuZ17dqVrl27xjqMUq1x48b5jpUUt86dOwfHcqRk0JiIiIj4piQiIiK+KYmIiIhvSiIiIuKbkoicE/IW4ktPT2f06NEAPP300zz//POFLh86/9l4+eWXY1rO/Je//GWR8xRUUj4jI4OVK1ee8TpLWol6iS6dnSXnvIKuUo+El19+mb59+xZZ0vzEiRNUqFD8//38JIEcGRkZVK9ePaxEJJJDeyJyzvvzn/8cLB740UcfkZSURHJyMmPGjMl1w6Tdu3fTq1cvGjduzL333htsL6gc/NixY0lISCApKYl77rmHlStXsmjRIsaMGUNycnKwHHyOnCu027dvz7333ltgifU+ffqwYcMGAFq1asWECRMAePDBB4PXX+RXYh5+2iM7deoUd911F02bNqVHjx707t2befPmBeebMmUKKSkpJCYmsmXLFrKysnj66af5xz/+QXJyMsuWLWPv3r1cf/31tG3blrZt27JixQoA9u3bR1paWrDse1m7YFly056IFK/f/x4icKUyycnweMEFtI4cORKsFAuBelL9+vU7bb7bbruN6dOn06FDB8aOHZtr2rp161i7di2VK1emSZMm/Pa3v6Vq1arBcvDVqlXjb3/7G4899hijRo1i4cKFbNmyBTNj//79xMXF0a9fP/r27cuAAQPyjXPnzp2sXLmS8uXL88c//pHu3bszc+ZM9u/fT7t27bjqqqvo3Lkzy5Yto0GDBlSoUCH45b1s2TKefvrpXCXmnXP069ePpUuXBmtdASxYsICsrCw2bdrEt99+S7Nmzbj99tuD0y+44ALWrFnDU089xaRJk3j22WcZOXIk1atXD1bGHTx4MH/4wx/o1KkTO3bsoGfPnmzevJm//OUvdOrUiQcffJDXXnuNGTNmhPEPKOcqJREpXuvWBcorRFnVqlVzldlIT08/7WZO+/fv5+DBg8Fy7oMHD85V6uTKK68M1mJKSEjgyy+/ZP/+/fmWgz///POpUqUKw4YNo2/fvsGy5UUZOHBgsEx9QSXWO3fuzOTJk4mPj6dPnz4sWbKE7OxsvvjiC5o0acL06dPz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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "counts, bins = np.histogram(w_opt, bins = 50)\n",
    "plt.hist(bins[:-1], bins, weights=counts)\n",
    "\n",
    "plt.axvline(1/len(w_opt), c = 'blue',linewidth = 2.5,label=\"MD uniform weight\" )\n",
    "plt.axvline(np.percentile(w_opt,99),c='magenta',linewidth = 2.5, label=\"99 percentile reweighting\" )\n",
    "plt.axvline(np.max(w_opt),c='red',linewidth = 2.5, label=\"Highest reweighted \" )\n",
    "\n",
    "plt.xlabel(\"$w_{opt}$\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### In the above plots, the blue line marks the Uniform weight from MD (before applying reweighting). On reweighting, $72\\%$ of the structures lie on the left of the blue line i.e. their weight decreases from the uniform MD weight. Accordingly, for 28% of the structures, their weight increases.  \n",
    "\n",
    "#### The orange line marks the 99 percentile value i.e. to the left of it, 99% of the structures, having small individual weights, are located. To the right, the remaining 1% of the structure, which was reweighted to higher individual weights are located.  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Next, we choose 100 random samples in a weighted manner"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "# choose 100 samples\n",
    "#ff = np.random.choice(len(w_opt),size=100,p=w_opt,replace=False)\n",
    "\n",
    "# save the frames to trajectory\n",
    "#traj[ff].save(\"new_trajectory.dcd\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### We then show the histogram of the weights of these 100 randomly selected structures. Selection being done in a weighted manner, the weights follow the same distribution as above."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAX4AAAEJCAYAAACT/UyFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy8QZhcZAAAgAElEQVR4nO3deXxU9b3/8deHnQIaxVSxKEurQCAhQIBQCJsSKMRYFJSlrTtSpdXeK4qt4lK90gt1gbqB8ENbRAoC8lN7L6hElqgYdgQU0IjgFmgp+5rv/eOcjEnIMobMTOC8n4/HPDLznXPO9zOH8MmZ7znn8zXnHCIiEhzVYh2AiIhElxK/iEjAKPGLiASMEr+ISMAo8YuIBIwSv4hIwNSIdQDhOO+881zTpk0rZVsffwz790P9+tCiRaVs8hSCAfYD9YFYxyIiVc8pJqyVK1fucs7FF28/LRJ/06ZNycnJqZRt9ewJ774LHTpAVlalbPIUggHeBToAWTGNRESqolNMWGb2eUntGuoREQkYJX4RkYBR4hcRCZjTYoxfKt+xY8fYsWMHhw8fjnUoItSpU4fGjRtTs2bNWIcSCEr8AbVjxw4aNGhA06ZNMbNYhyMB5pxj9+7d7Nixg2bNmsU6nEDQUE9AHT58mIYNGyrpS8yZGQ0bNtS3zyhS4g8wJX2pKvS7GF1K/BIzZsYvfvGL0Ovjx48THx9PRkYGANOnTyc+Pp527dpxySWX0LdvX7Kzsyut/5tvvpmNGzcCMHv2bFq1akWvXr0qbfuV6csvv2TQoEHlLle/fv0S2+fPnx/6rCJn/Bh/0zFvFHn99aepQMPYBCNF1KtXjw0bNnDo0CHq1q3LokWL+NGPflRkmWuvvZa//OUvACxevJirrrqKxYsX06pVq1Pu/4UXXgg9nzp1KlOmTKFbt25hrXv8+HFq1Ijef58LL7yQOXPmVHj9+fPnk5GRQUJCQiVGJacrHfFLTPXv35833vD+OM+cOZOhQ4eWumyvXr0YMWIEkydPPum966+/vkhiLDjyzcrKomfPngwaNIiWLVsyfPhwCmad69mzJzk5OTz88MMsW7aMm266idGjR3P48GFuuOEGEhMTadeuHYsXLwa8byCZmZn07t2byy67jKysLHr06MGVV15J8+bNGTNmDDNmzKBTp04kJiaybdu2k+JMTExkz549OOdo2LAhL730EgC/+tWvWLRoESdOnGD06NF07NiRpKQknn/+eQByc3Np06YNAAcPHuSaa64hISGBgQMH0rlz5yJ3tv/hD3+gbdu2pKam8s0335Cdnc2CBQsYPXo0ycnJJcYlwXLGH/FL+e68E9asqfztJifDk0+WvcyQIUN4+OGHycjIYN26ddx4440sXbq01OXbt28fSobhWr16NR999BEXXnghXbt2Zfny5UWO7MeOHcs777zDhAkTSElJ4c9//jNmxvr169m8eTPp6el88sknAKxatYp169Zx7rnnkpWVxdq1a9m0aRPnnnsuzZs35+abb2bFihU89dRTTJo0iSeL7YCC/ps0aULz5s1ZunQpv/rVr3jvvfd49tlnmTp1KmeffTYffvghR44coWvXrqSnpxcZA3/mmWc455xz2LhxIxs2bCA5OTn03oEDB0hNTeXRRx/l7rvvZsqUKdx3331kZmaSkZER1nCRnPmU+IU1a7xyILGQlJREbm4uM2fOpH///uUuX5E5ojt16kTjxo0BSE5OJjc3t8whnWXLlvGb3/wGgJYtW9KkSZNQ4u/Tpw/nnntuaNmOHTvSqFEjAH784x+Tnp4OeEf2Bd8UCktLS2PJkiU0adKEX//610yePJmdO3dyzjnnUK9ePRYuXMi6detC317+/e9/s2XLFi699NIi8d1xxx0AtGnThqSkpNB7tWrVCp0j6dChA4sWLfqee0uCQIlfKHTAGJPtZmZmctddd5GVlcXu3bvLXHb16tUlju/XqFGD/Px8APLz8zl69Gjovdq1a4eeV69enePHj4cXWAnq1atX5HXhbVerVi30ulq1aiX20717d55++mm2b9/Oo48+yrx585gzZw5paWmA94dt0qRJ9O3bt8h6ubm5YcVXs2bN0LeDU/2scuZS4pdyh2Mi7cYbbyQuLo7ExESyyqhA+O677zJ58uQSj6SbNm3KypUrueaaa1iwYAHHjh2rcDxpaWnMmDGD3r1788knn7B9+3ZatGjBqlWrKrzNAhdddBG7du3i6NGjNG/enG7dujFhwoTQCey+ffvy7LPP0rt3b2rWrMknn3xy0gnvrl278ve//51evXqxceNG1q9fX26/DRo0YN++faccv5wZdHJXYq5x48b89re/LfG9WbNmkZyczKWXXsp//dd/8eqrr5Z4xH/L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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "counts, bins = np.histogram(w_opt[ff], bins = 50)\n",
    "plt.hist(bins[:-1], bins, weights=counts)\n",
    "\n",
    "plt.axvline(1/len(w_opt), c = 'blue',linewidth = 2.5,label=\"MD uniform weight\" )\n",
    "plt.axvline(np.percentile(w_opt,99),c='magenta',linewidth = 2.5, label=\"99 percentile reweighting\" )\n",
    "plt.axvline(np.max(w_opt),c='red',linewidth = 2.5, label=\"Highest reweighted \" )\n",
    "plt.xlabel(\"$w_{opt}$\")\n",
    "plt.ylabel(\"Prob density\")\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### So, should I just extract these 100 structures selected randomly above? Or, take more samples from the tail region (say more structures in the right of 80 or 90 percentile mark?)  i.e. take more samples which have received largest weights after reweighting procedure (sort of importance sampling in the tail region). What would be more interesting for our study? "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Extract Structures"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Good Structures"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "bla = sorted( [(x,i) for (i,x) in enumerate(w_opt)], reverse=True )[:50]\n",
    "bla = [(i,x) for (x,i) in bla]\n",
    "bla1 = np.array(bla)[:,0]\n",
    "bla1 = [int(i) for i in bla1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "#fmt = '%d', '%e'\n",
    "#np.savetxt('good_a99SB-UCB.dat', bla, fmt = fmt, delimiter='\\t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save the frames to trajectory\n",
    "#traj[bla1].save(\"good_a99SB-UCB.dcd\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Good Ree_unscaled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [],
   "source": [
    "topology = traj.topology\n",
    "back = topology.select(\"name CA\") #select all atoms\n",
    "atom_pair = [[back[0],back[-1]]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "end_unscaled = []\n",
    "for index in bla1:\n",
    "    #print(index)\n",
    "    end_end = md.compute_distances(traj[index], atom_pair, periodic=False, opt= False)[0][0]\n",
    "    end_unscaled.append(end_end)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "bla = [(value[0],value[1]) for value in zip(bla1,end_unscaled)]\n",
    "fmt = '%d', '%1.3f'\n",
    "np.savetxt('Ree_good_a99SB-UCB.dat', bla, fmt = fmt, delimiter='\\t')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Bad Structures"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [],
   "source": [
    "bla = sorted( [(x,i) for (i,x) in enumerate(w_opt)], reverse=False )[:50]\n",
    "bla = [(i,x) for (x,i) in bla]\n",
    "bla1 = np.array(bla)[:,0]\n",
    "bla1 = [int(i) for i in bla1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [],
   "source": [
    "#fmt = '%d', '%e'\n",
    "#np.savetxt('bad_a99SB-UCB.dat', bla, fmt = fmt, delimiter='\\t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [],
   "source": [
    "# save the frames to trajectory\n",
    "#traj[bla1].save(\"bad_a99SB-UCB.dcd\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Bad Ree_unscaled "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "end_unscaled = []\n",
    "for index in bla1:\n",
    "    #print(index)\n",
    "    end_end = md.compute_distances(traj[index], atom_pair, periodic=False, opt= True)[0][0]\n",
    "    end_unscaled.append(end_end)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [],
   "source": [
    "bla = [(value[0],value[1]) for value in zip(bla1,end_unscaled)]\n",
    "fmt = '%d', '%1.3f'\n",
    "np.savetxt('Ree_bad_a99SB-UCB.dat', bla, fmt = fmt, delimiter='\\t')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
